Napisałem ten kod:Jak uzyskać klasę T z Vector <T> w java
public static <T> void getList(Vector<T> result){
System.out.println(result.getClass().getName());
}
Chcę napisać nazwę klasy T
, ale nie mogę dostać. Jak mogę to zrobić?
Napisałem ten kod:Jak uzyskać klasę T z Vector <T> w java
public static <T> void getList(Vector<T> result){
System.out.println(result.getClass().getName());
}
Chcę napisać nazwę klasy T
, ale nie mogę dostać. Jak mogę to zrobić?
O ile wiem, nie można. Generatory Java używają typu wymazania, więc w środowisku wykonawczym Vector<T>
zachowuje się tak jak Vector
bez żadnych argumentów szablonu.
Zamiast tego można sprawdzić typ elementu wektora.
Oto krótki opis typu skasowaniem: http://docs.oracle.com/javase/tutorial/java/generics/erasure.html
Zobacz także odpowiedzi na to pytanie: Java generics - type erasure - when and what happens
Innymi słowy:
void someMethod(Vector<T> values) {
T value = values.get(0);
}
odpowiada:
void someMethod(Vector values) {
T value = (T) values.get(0);
}
w środowisku wykonawczym, ale z pewnymi kontrolami czasu kompilacji dla typu, do którego są przesyłane.
Ok zrozumiałem :) bardzo dziękuję –