JAVA 8 '::' 关键字


Java 8 中我们可以通过 :: 关键字来访问类的构造方法,对象方法,静态方法

先定义一个接口,因为必须要用@FunctionalInterface修饰,否则编译错误(The target type of this expression must be a functional interface)

@FunctionalInterface
public interface Functional<T,F> {
    T convert(F form);
}
public class FunctionalTest {
    FunctionalTest() {
    }
    FunctionalTest(String something) {
        System.out.println(something);
    }
    public static String methodA(String str) {
        return str;
    }
    public String methodB(String str) {
        return str;
    }
    public static void main(String[] args) {
        // 获取静态方法
        Functional<String, String> convertA = FunctionalTest::methodA;
        String convertedA = convertA.convert("test");
        // 获取对象方法
        Functional<String, String> convertB = new FunctionalTest()::methodB;
        String convertedB = convertB.convert("test");
        // 获取构造方法
        Functional<FunctionalTest, String> convertC = FunctionalTest::new;
        FunctionalTest convertedCstru  = convertC.convert("test");
    }

::符号相当于实现接口的一种手段,通过::可以将某个类的方法变为Functionl接口的实现类,但是类方法和接口方法的参数和返回类型一致,@FunctionalInterface标记的接口只能有一个可实现方法,这样才能保证将对象方法对应到接口方法上,例如 Runnable接口被@FunctionalInterface标记,它只有一个 Run 方法!!!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容