Próbowałem po prostu uzyskać nazwę tego, co nazywa się częścią deklaracji, bez powodzenia. Czy ktoś może mi powiedzieć, jak się nazywa, jak mogę go używać w mojej własnej klasie? Na przykład mogę spróbować zrobić własną kolekcję i na przykład użyć new MyThing<String>
. Jakakolwiek pomoc się przyda, dzięki!Co to jest <K, V> w hashmapie i jak mam go używać w mojej klasie?
Odpowiedz
To jest generyczna deklaracja typu . Na przykład, aby określić, że mapa będzie używać strun jak klucze i liczb całkowitych jako wartości:
Map<String, Integer> mymap = new HashMap<String, Integer>();
To się nazywa rodzajowych, a oto jak można go używać:
public class MyClass<MyType> {
private MyType myItem;
public MyClass(MyType item) {
myItem = item;
}
public MyType getMyItem() {
return myItem;
}
}
umownie nazwę typ (MyType
w tym przypadku) to T
dla "typu" i K
i V
dla "klucza" i "wartości", ale po prostu ułatwiam zrozumienie.
Można wtedy zrobić:
MyClass<String> m = new MyClass<String>("potato");
System.out.println(m.getMyItem()); // prints "potato"
Bardziej konwencjonalne jest użycie pojedynczej dużej litery jako parametru ogólnego (nie jej prawdziwej nazwy). –
@Tom Wiem, byłem w trakcie edycji (odpowiedź z telefonu komórkowego to * trudne * ': P') – Doorknob
Czy to znaczy 'generics'? Zobacz http://docs.oracle.com/javase/tutorial/java/generics/index.html –
@StephenC Nie wiedziałem, że to się nazywa generics. – user2507230
Lub to - http://stackoverflow.com/questions/490091/java-generics –