为什么 Java 8 为方法引用引入了新的“::”运算符?
在 Java 8 中,方法引用是使用运算符完成的。::
例如
// Class that provides the functionality via it's static method
public class AddableUtil {
public static int addThemUp(int i1, int i2){
return i1+i2;
}
}
// Test class
public class AddableTest {
// Lambda expression using static method on a separate class
IAddable addableViaMethodReference = AddableUtil::addThemUp;
...
}
您可以看到,now 就像 是 的别名。因此将执行与相同的操作并返回相同的值。addableViaMethodReference
AddableUtil::addThemUp
addableViaMethodReference()
AddableUtil.addThemUp()
为什么他们选择引入新的运营商而不是使用现有的运营商?我的意思是,当函数名称以 结尾时执行函数,并在没有尾随时返回函数引用。()
()
方法执行
AddableUtil.addThemUp();
方法参考
AddableUtil.addThemUp;
这难道不是更简单和直观吗?AFAIK目前(Java 7)不用于任何其他目的,并引发编译错误。为什么不利用这个机会,而不是创建一个全新的运营商呢?AddableUtil.addThemUp