Cóż, krótko mówiąc, nie można.
Jednak można uzyskać wartość <?>
podczas korzystania z FloatFoo
.
Rzeczywiście, z tego, co pamiętam, leki generyczne nie są przechowywane w informacji o klasie.
Jednak podczas tworzenia podtypu (klasy lub interfejsu) typu generycznego należy zapamiętać informacje ogólne, ponieważ mogą one określać niektóre metody podpisu podtypu.
Jako przykład, jeśli Foo
interfaceis zadeklarowane jako to:
public interface Foo<T> {
public T doIt();
}
Posiadanie
public interface FloatFoo extends Foo<Float>
Oznacza to interfejs ma
public Float doIt();
metody zadeklarowane.
W tym celu kompilator musi mieć informacje o typie. Informacje te zostaną odzwierciedlone w interfejsie API Reflect, ponieważ klasa super-klasy FloatFoo
będzie miała powiązane z nią niektóre parametry Type. A przynajmniej to jest to, co pamiętam z nielicznych przypadków, w których spotkałem się z takimi przypadkami (lub opracowałem je, ponieważ czasem może to być obowiązkowe).
Ale będziesz miał znacznie pełniejsze informacje pod numerem Angelika's generics FAQ.
Czy Foo jest Twoim własnym interfejsem? Czy możesz wdrożyć dodatkowe metody? – Arne
Tak, pomyślałem o tym - metoda 'getType()' rozwiązałaby problem. Prawdopodobnie skończę z takim rozwiązaniem. – mik01aj