Typ klasy jako parametr w klasie generycznej

Typ klasy jako parametr w klasie generycznej
1

Cześć,

Kopiuj
public class Util
{
    public static Class<?> getType(Class<?> clazz) {
    // z clazz wybieram jakieś pole field ( java.lang.reflect.Field)
    ..
    Class<?> t = field.getType()
    return t;
  }
}

public class Test<K extends Serializable> {
    public Test(Class<K> clazz) {
      ...
    } 
}

Co zrobić by można było utworzyć obiekt klasy Test z wykorzystaniem metody Util.getType?
Czy jest to w ogóle możliwe?

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 11 godzin
0

Klasa Class ma metodę newInstance, ma też metody do wyciągania obiektów typu Contructor, a klasa Constructor też ma metody newInstance. To jest to o co ci chodzi?


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
0

Czy mógłbyś podać przykładowy kod jak ustawić parametr K dla klasy Test (nie konstruktora)?

Kopiuj
Class<?> clazz = Util.getType(..);
new Test<?????>(clazz);
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 11 godzin
0

Do czego ci to potrzebne? Daj jakiś większy kawałek.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
0

Większy kod nie jest wymagany do tego. Do czego mi to potrzebne:

  1. Dodaję do różnych encji T swoją adnotację, która określa id i tekst dla komponentu C służącego jako wizualizacja danych
  2. Klasa komponentu C otrzymuje jako parametr klasy T
  3. W konstruktorze C chce odczytać, które pole w T jest oznaczone jako @JAVAX.persistence.Id i przekazać to do DAO jako typ klucza
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 11 godzin
0

Przede wszystkim w Javie jest wymazywanie typów (type erasure) i możesz w ogóle olać typy, jeśli nie masz na nie pomysłu. Mi się na razie nie chce myśleć, jaki by tu typy dopasować, ale pierwsza myśl jest taka, że nic sensowego się nie uda. Sensownego tzn mocniejszego niż <?> czy <Object>.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0

Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.