java中的lambda表达式是否仍然可以压缩

时间:2017-06-30 12:13:53

标签: java lambda java-8

我有这段代码。

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() 要么 还有其他方法来缩短这个吗?

2 个答案:

答案 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);
    }
}