Lambda方法引用的可理解的toString

时间:2015-01-04 14:33:52

标签: java lambda methodhandle

有没有办法为使用方法句柄生成的lambda获得可理解的toString?在Java 8之前,我一直在使用Guava的Function接口,我创建了一个为我的许多数据类生成函数的脚本。我还包括一个toString,它清楚地标识了它的类和方法,例如,`MyItem :: getPrice'。

然而,使用Java 8,虽然声明函数变得更容易,但我现在无法识别函数是什么。 nice toString的最重要原因是出于调试目的,但我确信还有其他原因。如果这些信息可以通过反射获得,那将是很好的,但显然不是。

此代码段

Function<String,Integer> func = "ABS"::indexOf;
System.out.println(func);                           
System.out.println(func.getClass());
System.out.println(func.getClass().getSuperclass());

产生

com.github.jkstrauss.kavve.test.common.TestLambda$$Lambda$1/918221580@5ca881b5
class com.github.jkstrauss.kavve.test.common.TestLambda$$Lambda$1/918221580
class java.lang.Object

正如您所看到的,甚至没有一些lambda超类可以使用。

澄清

询问如何定义自己的toString,但我如何确定此lambda调用的类/方法。定义我自己的toString会破坏使用Java 8 lambdas的全部目的,因为为了得到一个体面的toString,我需要做更多的打字错误的工作。我不妨使用没有lambdas的自动脚本。

0 个答案:

没有答案