Je suis un peu boiteux avec les génériques, mais je me demande, pour la classe suivante:Est-il possible d'obtenir la classe de l'argument générique?
static class SomeClass<T> {
private T value;
public SomeClass(T value) {
T.class?
this.value = value;
}
public T getValue() {
return value;
}
}
Appelée par exemple: SomeClass<String> stringer = new SomeClass<String>("Hello");
Est-il possible d'obtenir String.class
(ou quoi que T serait) dans la constructeur?
Ok, attendez une seconde, je vais vous expliquer ce que je suis en train de résoudre
Le problème réel est que je suis en utilisant OrmLite et j'ai beaucoup d'objets DAO, comme celui-ci:
public class PostDAO extends BaseJdbcDao<Post, String> {
public PostDAO(DatabaseType databaseType) {
super(databaseType, Post.class);
}
}
Pour Domain
il est:
public class DomainDAO extends BaseJdbcDao<Domain, String> {
public DomainDAO(DatabaseType databaseType) {
super(databaseType, Domain.class);
}
}
et ainsi de suite. Je voulais paramètrer ceux-ci, de sorte que je ne peux en avoir un:
public class DAO<K, V> extends BaseJdbcDao<K, V> {
public DAO(DatabaseType databaseType) {
super(databaseType, (WHAT HERE?));
}
}
mais je suis bloqué sur la partie what here
)
Pourquoi voulez-vous obtenir la classe? – pakore
vous ne pouvez pas faire 'new SomeClass (" Bonjour ");' sur une classe 'static' btw. –
pakore
@pakore: Peut-être que vous ne pouvez pas, mais je peux. ;) Sérieusement: Cela fonctionne bien pour moi et pourquoi pas? – musiKk