Frage Was ist statisch ?


Ich lese nur durch Sammlung Java Tutorial und wundere mich, warum <E>  wird nach dem statischen benötigt?


public static <E> Festlegen <E> removeDups (Sammlung <E> c) {
    gebe neues LinkedHashSet zurück (c);
}


Vielen Dank, Sarah


5
2017-08-13 00:06


Ursprung


Antworten:


Zur besseren Lesbarkeit befindet sich normalerweise ein Leerzeichen zwischen dem statischen und dem generischen Parameternamen. static erklärt die Methode als statisch, d. h. keine Instanz, die benötigt wird, um sie aufzurufen. Das <E> erklärt, dass es einen unbegrenzten generischen Parameter namens E gibt, der verwendet wird, um die Argumente und / oder den Rückgabewert der Methode zu parametrisieren. Hier wird es sowohl im Rückgabetyp verwendet, Set<E> deklariert die Methode einen Satz von E, und in dem Parameter, Collection<E> anzeigend, dass die Methode eine Sammlung von E. nimmt

Der Typ von E ist nicht angegeben, nur der Rückgabewert und der Methodenparameter müssen generisch mit demselben Typ parametrisiert sein. Der Compiler ermittelt den tatsächlichen Typ beim Aufruf der Methode. Beispielsweise,

   Collection<String> myStrings = new ArrayList<String>();
   .. add strings
   Set<String> uniqueStrings = SomeClass.removeDups(myStrings);

Wenn Sie versuchen, verschiedene parametrisierte Typen für die beiden Sammlungen zu verwenden, z

   Set<Integer> uniqueStrings = SomeClass.removeDups(myStrings);

Dies erzeugt einen Compilerfehler, da die generischen Parameter nicht übereinstimmen.


9
2017-08-13 00:11



Das <E> ist die Art zu erklären, dass dies eine ist Generische Methode ein Feature, das mit Generics in Java 5.0 eingeführt wurde

Sehen Hier für mehr Details über seine Verwendung und Begründung.


2
2017-08-13 00:09