我不想有一个正常的lambda实现一个方法,并重新定义它的toString作为一个附加值。我希望lambda表达式只实现toString方法。 我知道我不是很好表达,但我相信你会理解我这个例子。如何在Java 8中将lambda表达式定义为toString?
public class LambdaToStringTest {
public interface ToStringInterface {
public abstract String toString();
}
public static void main(String[] args) {
print("TRACE: %s", (ToStringInterface)()->someComputation()); // <<-- ERROR: The target type of this expression must be a functional interface
}
private static void print(String format, Object... args) {
System.out.println(String.format(format, args));
}
}
它编译如果我改变方法的名称,但它不覆盖toString,所以打印方法将不会打印什么预期。
这是试图定义一个日志子系统,它仅在需要时(当它真的要打印时)评估lambda,但与非lambda参数兼容。我知道其他方式来实现它,但我想知道为什么我不能这样做,如果有解决方法或我做错了什么,
我不是问这个:http://stackoverflow.com/questions/16544583/can-i-override-tostring-方法的功能接口在jdk8-using-lambdas我只想实现toString。 – aalku