我有这段代码。
public class TypeInterface{
public static void main(String [] args){
StringLengthLambda myLambda = s -> s.length();
System.out.print(myLambda.getLength("abc"));
}
interface StringLengthLamdba{
int getLength(String s);
}
}
可以将此代码修改为
StringLengthLambda myLambda = s.length()
要么
还有其他方法来缩短这个吗?
答案 0 :(得分:4)
我无法想办法写一个更短的lambda,但你可以使用方法参考:
StringLengthLambda myLambda = String::length;
答案 1 :(得分:1)
您甚至不需要受保护的接口StringLengthLambda
。你可以选择:
public static void main(String [] args){
Function<String, Integer> myLambda = String::length;
System.out.print(myLambda.apply("abc"));
}
如果你想要不同的&#34;长度计算方法&#34;在"abc"
您甚至可以选择:
public class TypeInterface {
public static void main(String[] args) {
print(String::length);
}
private static void print(StringLengthLambda myLambda) {
System.out.print(myLambda.getLength("abc"));
}
@FunctionalInterface
interface StringLengthLambda {
int getLength(String s);
}
}