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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage