繁体   English   中英

Java 构造函数引用赋值与新创建的对象赋值

[英]Java constructor reference assignment Vs new created object assignment

我在我们的项目中遇到了以下代码:

MyInterface var = MyClass::new;

有区别吗

MyInterface var = new MyClass();

懒惰的?

MyInterface var = new MyClass();

创建MyClass的实例并将其分配给MyInterface类型的变量。 这要求MyClass implements MyInterface并具有无参数构造函数。 结果是MyClass一个实例,它实现了MyInterface但是它喜欢。


MyInterface var = MyClass::new;

尝试实现MyInterface ad-hoc。 这要求MyInterface是一个具有单个抽象方法的功能接口 该单个抽象方法必须具有可从MyClass分配的返回类型和与MyClass的构造函数之一匹配的参数列表。

它是模拟的:

MyInterface var = new MyInterface() {
    public MyClass anyMethodName() {
        return new MyClass();
    }
}

结果是MyInterface一个实例,它将在调用其单个抽象方法时创建一个新的MyClass实例,将其所有参数传递给MyClass的构造函数。


换句话说,这两个结构没有任何共同点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM