Почему в 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;
...
}
Вы можете видеть, чтоaddableViaMethodReference
теперь действует как псевдонимAddableUtil::addThemUp
, ТакaddableViaMethodReference()
будет выполнять то же действие, что иAddableUtil.addThemUp()
и вернуть то же значение.
Почему они решили ввести новый оператор вместо того, чтобы использовать уже существующий? Я имею в виду, выполнить функцию, когда имя функции заканчивается()
и вернуть ссылку на функцию, когда нет трейлинга()
.
Выполнение метода
AddableUtil.addThemUp();
Ссылка на метод
AddableUtil.addThemUp;
Разве это не будет намного проще и понятнее? НАСКОЛЬКО МНЕ ИЗВЕСТНО,AddableUtil.addThemUp
в настоящее время (Java 7) не служит никаким другим целям и выдает ошибку компиляции. Почему бы не использовать эту возможность вместо создания совершенно нового оператора?