"getClass()" generycznego typu - problem

0

Cześć potrzebuję w metodzie veryImportantThing użyć parametru typu Class.

public abstract class Something<T> {

    public abstract Class<T> getGenericClass();

}



public class Example extends Something<Example> {
    @Override
    public Class<Example> getGenericClass() {
        return Example.class;
    }
}

public static abstract class BaseDao<T extends Something<T>> extends Amazing {

        T type;

        public T doSomething() {
          **  this.veryImportantMethod(type.getGenericClass()); **
        }

}

public static class Son extends BaseDao<Example> {
}

Póki co dostaję coś w tylu ...read of unwritten field... NP_UNWRITTEN_FIELD
Ktoś wie jak to zrobić inaczej? Dzięki

0

Do pola T nie przypisałeś żadnej wartości, jest ono nullem. Próbujesz wywołać jego metodę. Musisz w jakiś sposób wstrzyknąć tę wartość, chociażby przez konstruktor. Jeśli chciałeś w ten sposób uzyskać dostęp do typu T nie posiadając instancji jego typu, to jest to niemożliwe - w Javie typy generyczne są wymazywane po kompilacji. Zamiast pola typu T możesz użyć Class<T> i to wstrzykiwać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1