And*_*i N 2 java lambda java-8
我可以覆盖功能接口的toString方法吗?或者改写.是否有优雅的方法来更改实现功能接口的匿名内部类并使用lambdas覆盖toString方法?我在JDK8中创建lamba表达式时可以覆盖toString.
interface Iface {
void do();
}
main() {
Iface iface = () -> /*do something*/
System.out.println(iface); // I would like to see anything useful in output
}
Run Code Online (Sandbox Code Playgroud)
我可以覆盖iface的toString吗?
如果您拥有该界面,则可以执行此类操作
public interface Iface {
void doIt();
default Iface withToString(final String toString) {
return new Iface(){
public void doIt(){
Iface.this.doIt();
}
public String toString(){
return toString;
}
};
}
}
public static void main(String... args){
Iface iface = () -> {};
iface = iface.withToString("anything useful");
System.out.println(iface); // prints "anything useful" to output
}
Run Code Online (Sandbox Code Playgroud)
当然,在实践中使用比String更有趣的东西很有趣.捕获参数并从doIt返回值(如果有的话)并生成带有另一个功能接口的自定义字符串并不是太多代码.
归档时间: |
|
查看次数: |
1998 次 |
最近记录: |