powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Генерики, Class<T>, Map
5 сообщений из 5, страница 1 из 1
Генерики, Class<T>, Map
    #38514951
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть такой класс
Код: java
1.
2.
3.
public class MetaObject {
    public String name;
}


Он является базовым для других (MetaDataTable, MetaDataColumn и т.д.);

Код: java
1.
2.
3.
public class MetaDataTable extends MetaObject {
    ...
}




Я хочу сделать такое хранилище для этих объектов. И метод, что бы можно было по классу доставить списки объектов.
Код: java
1.
2.
3.
4.
5.
6.
7.
public class  MetaDataDatabase {
    public final Map<Class<MetaObject>,List<MetaObject>> metaObjectListMap = new HashMap<Class<MetaObject>,List<MetaObject>>();
    
    public <T extends MetaObject> List<T> getMetaObjects(Class<T> clazz) {
        return metaObjectListMap.get(clazz);        
    }
}



Но у меня метод getMetaObjects выдает ошибку не может преобразовать List<MetaObject> в List<T>, хотя T extends MetaObject.

Что я делаю не так?
...
Рейтинг: 0 / 0
Генерики, Class<T>, Map
    #38515028
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но у меня метод getMetaObjects выдает ошибку не может преобразовать List<MetaObject> в List<T>, хотя T extends MetaObject.

Что я делаю не так?[/quot]

Может так?
Код: java
1.
2.
3.
4.
5.
6.
7.
public class  MetaDataDatabase {
    public final Map<Class<MetaObject>,List<MetaObject>> metaObjectListMap = new HashMap<Class<MetaObject>,List<MetaObject>>();
    
    public <T extends MetaObject> List<T> getMetaObjects(Class<T> clazz) {
        return (List<T>)metaObjectListMap.get(clazz);        
    }
}
...
Рейтинг: 0 / 0
Генерики, Class<T>, Map
    #38515513
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Странного хотите. Накропаю без проверки...

Код: sql
1.
2.
3.
4.
5.
6.
7.
public class  MetaDataDatabase {
    public final Map<Class<? extends MetaObject>,List<? extends MetaObject>> metaObjectListMap = new HashMap<Class<? extends MetaObject>,List<? extends MetaObject>>();
    
    public <T extends MetaObject> List<T> getMetaObjects(Class<T> clazz) {
        return (List<T>) metaObjectListMap.get(clazz);        
    }
}



Из-за кривой реализации генериков в java без преобразования, увы, не обойтись.
...
Рейтинг: 0 / 0
Генерики, Class<T>, Map
    #38515519
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще- в постановке задачи есть уже какая-то ошибка...
...
Рейтинг: 0 / 0
Генерики, Class<T>, Map
    #38515559
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhas,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class MetaDataDatabase<T extends MetaObject> {
	
    public final Map<Class<T>,List<T>> metaObjectListMap = new HashMap<>();
    
    public List<T> getMetaObjects(Class<T> clazz) {
        return metaObjectListMap.get(clazz);        
    }
}
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Генерики, Class<T>, Map
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]