我在我们的项目中遇到了以下代码:
MyInterface var = MyClass::new;
有区别吗
MyInterface var = new MyClass();
懒惰的?
我在我们的项目中遇到了以下代码:
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
.
换句话说,这两种结构没有任何共同之处。