2013-07-21 17 views
6

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?

+1

Czy to znaczy 'generics'? Zobacz http://docs.oracle.com/javase/tutorial/java/generics/index.html –

+0

@StephenC Nie wiedziałem, że to się nazywa generics. – user2507230

+0

Lub to - http://stackoverflow.com/questions/490091/java-generics –

Odpowiedz

6

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>(); 
3

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" 
+0

Bardziej konwencjonalne jest użycie pojedynczej dużej litery jako parametru ogólnego (nie jej prawdziwej nazwy). –

+1

@Tom Wiem, byłem w trakcie edycji (odpowiedź z telefonu komórkowego to * trudne * ': P') – Doorknob