2010-07-27 9 views

Odpowiedz

6

Zakładam, że chcesz poznać klasę szablonu listy w czasie wykonywania, a krótka odpowiedź brzmi: nie możesz. Generics Java są używane tylko w czasie kompilacji: argumenty szablonu są usuwane przed wygenerowaniem kodu bajtowego. Nazywa się to "type erasure".

+0

link jest nieprawidłowa aktualizacja pls. –

6

Jeśli Twój List jest zdefiniowana z betonową typu param, jak na przykład:

private class Test { 
    private List<String> list; 
} 

następnie można je dostać za pośrednictwem refleksji:

Type type = ((ParameterizedType) Test.class.getDeclaredField("list") 
    .getGenericType()).getActualTypeArguments()[0]; 

Jednakże, jeśli typ nie jest znany w czasie kompilacji, jest utracone z powodu type erasure

+0

link jest nieprawidłowy aktualizacja pls –

+0

dzięki, zrobione ... – Bozho

0

Można spróbować czegoś takiego:

Class<List<Foo>> cls = (Class<List<Foo>>)(Object)List.class