2015-11-20 8 views
7

PredicateStringに変換する方法があるかどうかを知りたいと思います。たとえば、関数が存在します。Java - 述語を文字列に変換する

public static <T> String convertPredicate(Predicate<T> objPredicate) { 
    return ?... 
} 

次の呼び出しは、(obj) -> obj.value== 1を返すように:

convertPredicate((obj) -> obj.value== 1) 
+0

バイトコード分析を使用して、(1)Java式からSQLへ、(2)JavaからJavaScriptを生成するために、いくつかのプロジェクトがあります。しかし、これは匿名のインターフェイスインスタンスがJavaで生成されるため、恋愛の巨大な作業になります。確かに変数名は人工的なものでなければなりません。 –

+0

いいえ、ラムダとその実装の内部に「何が入っているのか」を見ることはできません。 –

答えて

6

いいえ、一般的に、それはJavaでことはできません。ラムダクラスのバイトコードを解析して逆コンパイルしようとするかもしれませんが(このクラスのバイトコードを取得することは、実際にはあまり重要ではありません)、実際に複雑で壊れやすいでしょう。ラムダの特定のランタイム表現は指定されておらず、異なるJavaバージョンまたは異なるJDKベンダーで変更される可能性があります。

関連する問題