【发布时间】:2014-05-16 20:51:31
【问题描述】:
出于调试目的,我尝试在 Java 8 中创建 lambda 表达式(特别是 Predicates,尽管它对其他 lambda 表达式也很有趣)的字符串表示形式。我的想法是这样的:
public class Whatever {
private static <T> String predicateToString(Predicate<T> predicate) {
String representation = ... // do magic
return representation;
}
public static void main(String[] args) {
System.out.println(Whatever.<Integer>predicateToString(i -> i % 2 == 0));
}
}
输出将是i -> i % 2 == 0(或逻辑上等价的东西)。 toString() 方法似乎没有任何帮助,输出类似于 com.something.Whatever$$Lambda$1/1919892312@5e91993f (我猜这是可以预料的,因为 toString() 没有被覆盖)。
我不确定这样的事情是否可能,例如通过反思,到目前为止,我当然无法在上面找到任何东西。有什么想法吗?
【问题讨论】:
-
调试目的?不能只看源码吗?
-
这需要反编译器。
-
@SotiriosDelimanolis 当然,我总是可以查看源代码。但最好有一个可打印的表示。
-
那不能直接复制源码吗?
-
@JeroenVannevel 你的意思是每次都手动编写一个字符串表示?可能,当然。但不是很优雅。
标签: java lambda tostring java-8 predicates