powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Generics: вызвать конструктор класса <T>
5 сообщений из 5, страница 1 из 1
Generics: вызвать конструктор класса <T>
    #39800503
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть класс generic <T>:
1. Как в методе generateObjects() правильно создавать новые объекты <T>? new <T>(parameters) - ошибка
2. Как правильно перебрать объекты List<T> objectList через for () в методе run()? for (<T> obj : objectList) - ошибка

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class ObjectProducer<T> implements Runnable {
    
    private List<T> objectList;

    public ObjectProducer() {
        this.objectList = new ArrayList<>();
    }
    
    @Override
    public void run() {
        objectList = generateObjects();
        for (<T> obj : objectList) {
        
        }        
    }
    
    private List<T> generateObjects() {
        objectList.add(new <T>(parameters));
        
        return objectList;
    }

}
...
Рейтинг: 0 / 0
Generics: вызвать конструктор класса <T>
    #39800515
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar,
варианты:

-передать Class<T> и потом от newInstance();
-передать имя класс, потом создать класс по имени и опять newInstance()
-передать фабрику для создания нового экземляра класса
-сделать класс асбтрактным, сделать абстрактный методы createNew(); и потом в имплементациях таки реализовать его как хочешь
-в зависимости от вашей композиции классов можно использовать getGenericSuperclass()
...
Рейтинг: 0 / 0
Generics: вызвать конструктор класса <T>
    #39800699
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
    @Override
    public void run() {
        objectList = generateObjects();
        for (T obj : objectList) {
        
        }        
    }
...
Рейтинг: 0 / 0
Generics: вызвать конструктор класса <T>
    #39800792
betelgeizex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Molasar,

На второй вопрос коллега mayton дал ответ.

А на первый вопрос правильный ответ только один - никак Представьте, что тот самый тип 'T' - это интерфейс.

Код: java
1.
        ObjectProducer<Runnable> producer = new ObjectProducer<>();



Какой из всех возможных Runnable должен создать ваш метод generateObjects?

Коллега Озверин дал варианты, но думать нужно вам...
...
Рейтинг: 0 / 0
Generics: вызвать конструктор класса <T>
    #39800801
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
    private List<T> generateObjects() {
        objectList.add(new <T>(parameters));
        
        return objectList;
    }



Смотрите... тут в первую очередь надо искать смыслы. Что хочет сделать автор? Что нужно бизнесу.
Разумеется шаблонизатор - это мощный механизм и на нем можно написать любую хрень которая
никогда не скомпилируется.

Но мы же с вами не обезяны. Мы - инженеры. Мы не должны играться кубиками и случайно складывать
из них решения! А потом приходить в форум и спрашивать почему оно так. Это не инженерный подход.

Нужно спросить. Что должен делаеть генерализованный метод generateObjects() ?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Generics: вызвать конструктор класса <T>
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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