[英]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.