Warum hat Java 8 einen neuen "::" - Operator für Methodenreferenzen eingeführt?
In Java 8 werden Methodenreferenzen mit dem::
Operator
Beispielsweis
// 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;
...
}
Sie können sehen, dass dieaddableViaMethodReference
verhält sich jetzt wie ein Alias fürAddableUtil::addThemUp
. SoaddableViaMethodReference()
führt die gleiche Aktion aus wieAddableUtil.addThemUp()
und geben den gleichen Wert zurück.
Warum haben sie beschlossen, einen neuen Operator einzuführen, anstatt einen vorhandenen zu verwenden? Ich meine, eine Funktion ausführen, wenn der Funktionsname mit @ end()
und die Funktionsreferenz zurückgeben, wenn kein Trailing @ vorhanden i()
.
Method Execution
AddableUtil.addThemUp();
Methodenreferenz
AddableUtil.addThemUp;
Wäre das nicht viel einfacher und intuitiver? SO VIEL ICH WEISS,AddableUtil.addThemUp
erfüllt derzeit keinen anderen Zweck (Java 7) und gibt einen Kompilierungsfehler aus. Nutzen Sie diese Gelegenheit, anstatt einen völlig neuen Operator zu erstellen.