我希望在运行时将java代码打印到控制台。我并不期望完全相同的代码,而是存在的逻辑。
鉴于以下内容:
Predicate<String> predicate = (s) -> s.equals("yes");
我想打电话:
String javaCode = getCodeString(predicate);
javaCode
逻辑上等于:(s) -> s.equals(\"yes\")")
。
这可能吗?
答案 0 :(得分:0)
不容易。即使您的应用程序可以使用源代码,也无法在所描述的上下文中执行此操作。从理论上讲,可以使源代码可用(或嵌入在JAR中)。然后理论上如果你知道行号,你就可以得到源代码。但是,要知道行号,必须抛出异常。使用lambdas会使这更加复杂。如果你想开始阅读字节代码,你可能会做类似的事情,但你提出的要求非常复杂。