powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Универсальные типы и initInstance()
9 сообщений из 9, страница 1 из 1
Универсальные типы и initInstance()
    #34171411
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

class MyList extends LinkedList<T extends MyObject>{
public T newElem(){
// Что тут надо делать? Очевидное для меня
// return T.newInstance();
// не работает
// что делать? Лист именно что хочет создать объект "подчинённого"
класса
}
}

--
Алексей
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34171675
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зубрить материал по генерикам и не задавать глупых вопросов.
Ключевые слова: Java Generics Compiletime Erasure
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34173769
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz пишет:

> Зубрить материал по генерикам и не задавать глупых вопросов.

Ну куда ж без них для начала :)

> Ключевые слова: Java Generics Compiletime Erasure

Насколько я понял, обобщённый класс не знает о реальном типе и потому
надо хранить ссылку на Class? Причём инициировать её, например, в
конструкторе? Нет "красивого" способа решения?

--
Алексей
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34174440
Blazkowcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GKS_SamaraНет "красивого" способа решения?

Есть - фабрика.
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34175155
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowcz пишет:

>> Нет "красивого" способа решения?
> Есть - фабрика.

Но так и не понятно, как там сделать "красиво".
Если есть такое:

public class CList<T extends CObject> extends LinkedList<T>{
...public CList(Class<T> elemClass){
.....super();
.....this.elemClass = elemClass;
...}
...public static CList<? extends CObject> makeInstance(
.......Class<? extends CObject> elemClass)
...{
.....return new CList( elemClass );
...}
}

то использование выглядит жутковато:

CList<CMyObject> list = ( CList<CMyObject> ) CList.makeInstance(
CMyObject.class );

Читая книги и то, что нашлось в гуглу, я так и не понял, как определить
класс, чтобы создавать его попроще:

CList<CMyObject> list = CList.makeInstance( CMyObject.class );

--
Алексей
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34175640
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara
Но так и не понятно, как там сделать "красиво".
...
то использование выглядит жутковато:
...
Читая книги и то, что нашлось в гуглу, я так и не понял, как определить
класс, чтобы создавать его попроще:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 class  CList<T  extends  CObject>  extends  LinkedList<T> {
     private   Class <T> elemClass;

     public  CList( Class <T> elemClass) {
         super ();
         this .elemClass = elemClass;
    }

     public   static  <G  extends  CObject> CList<G> makeInstance( Class <G> elemClass) {
         return   new  CList<G>(elemClass);
    }
}

//usage:
CList<CMyObject> list = CList.makeInstance(CMyObject. class );
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34176061
alexx726
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs GKS_Samara
Но так и не понятно, как там сделать "красиво".
...
то использование выглядит жутковато:
...
Читая книги и то, что нашлось в гуглу, я так и не понял, как определить
класс, чтобы создавать его попроще:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 class  CList<T  extends  CObject>  extends  LinkedList<T> {
     private   Class <T> elemClass;

     public  CList( Class <T> elemClass) {
         super ();
         this .elemClass = elemClass;
    }

     public   static  <G  extends  CObject> CList<G> makeInstance( Class <G> elemClass) {
         return   new  CList<G>(elemClass);
    }
}

//usage:
CList<CMyObject> list = CList.makeInstance(CMyObject. class );


Это считается теперь красиво? Если я правильно понял, человек тоже самое предложил в своем вопросе...
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34176785
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexx726Если я правильно понял, человек тоже самое предложил в своем вопросе...
Прочитай ещё раз, что написал человек.
...
Рейтинг: 0 / 0
Универсальные типы и initInstance()
    #34176837
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs пишет:
> *public* *static* <G *extends* CObject> CList<G> makeInstance(*Class*<G> elemClass) {
> *return* *new* CList<G>(elemClass);

Ага, спасибо, до этого я так и не дошёл- книжка моя мутновата...


--
Алексей
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Универсальные типы и initInstance()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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