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

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

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。 这要求MyInterfacefunction界面中具有单一的抽象方法。 该单个抽象方法必须具有可从MyClass分配的返回类型和与MyClass构造函数匹配的参数列表。

它类似于:

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

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


换句话说,这两种结构没有任何共同之处。