出于调试目的,我正在尝试Predicate
在 Java 8 中创建 lambda 表达式(特别是 s,尽管它对其他 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()
它没有被覆盖)。
我不确定这样的事情是否可能,例如通过反射,到目前为止我当然无法找到任何东西。有任何想法吗?