Я вроде хромой с обобщениями, но мне интересно, для следующего класса:Можно ли получить класс общего аргумента?
static class SomeClass<T> {
private T value;
public SomeClass(T value) {
T.class?
this.value = value;
}
public T getValue() {
return value;
}
}
Если вызывается, например: SomeClass<String> stringer = new SomeClass<String>("Hello");
Можно ли получить String.class
(или что-то T будет) в конструктор?
Хорошо, подождите секундочку, я собираюсь объяснить, что я пытаюсь решить
Реальная проблема заключается в том, что я с помощью OrmLite и у меня есть много объектов DAO, как этот:
public class PostDAO extends BaseJdbcDao<Post, String> {
public PostDAO(DatabaseType databaseType) {
super(databaseType, Post.class);
}
}
Для Domain
это:
public class DomainDAO extends BaseJdbcDao<Domain, String> {
public DomainDAO(DatabaseType databaseType) {
super(databaseType, Domain.class);
}
}
и так далее. Я хотел параметризуем их, так что я могу иметь только одно:
public class DAO<K, V> extends BaseJdbcDao<K, V> {
public DAO(DatabaseType databaseType) {
super(databaseType, (WHAT HERE?));
}
}
, но я застрял на what here
части)
Почему вы хотите получить класс? – pakore
вы не можете сделать 'new SomeClass (« Hello »);' на 'static' class btw. –
pakore
@pakore: Может быть, вы не можете, но я могу. ;) Серьезно: он отлично работает для меня и почему бы и нет? – musiKk