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

Я недавно вернулся на один проект и был удивлен увидев там изменения на уровне моделей (для БД). Данные измения относятся ко всеобщему использованию generics на уровне классов. Иерархию классов можно найти во вложенном файле. Вообщем раньше generics использовались на уровне методов и народ как то боролся за простоту и понятность кода.

Было:
Код: java
1.
public abstract class JPARecord implements HasKey, Serializable {/*...*/}


Стало:
Код: java
1.
public abstract class JPARecord<T extends JPARecord> implements HasKey, Serializable {/*...*/}




Было:
Код: java
1.
public abstract class JPAModel extends JPARecord {/*...*/}


Стало:
Код: java
1.
public abstract class JPAModel<T extends JPAModel> extends JPARecord<T> {/*...*/}



Было:
Код: java
1.
public <T extends JPARecord> T persist() {/*...*/}


Стало:
Код: java
1.
public T persist() {/*...*/}



Было:
Код: java
1.
public abstract class Resource extends Content implements Activity {/*...*/}


Стало:
Код: java
1.
public abstract class Resource<T extends Resource> extends Content<T> implements Activity {/*...*/}



Было:
Код: java
1.
List<Resource> resources = resourceService.findResourceEntriesForWorkSpace() {/*...*/}


Стало:
Код: java
1.
List<Resource<?>> resources = resourceService.findResourceEntriesForWorkSpace() {/*...*/}



Было:
Код: java
1.
public class BinaryDocument extends Resource {/*...*/}


Стало:
Код: java
1.
public class BinaryDocument extends Resource<BinaryDocument> {/*...*/}



Основная аргументация таких изменений - типа раньше многое было дозволенно а теперь нам компилятор помогает не получить контакты вместо ресурсов. Для меня это звучит как паранойя. Да и сам рефакторинг не упростил а усложнил существующий код. Человек который этим занимался сказал что такой стиль называется type propagation (когда при объявлении класса потомка, классу родителю в дженерик тип передается тип класс потомка). Кто-нибудь что-нибудь знает про данный подход, и насколько он актуален ? Так же я нахожу неудачным тот факт что теперь использование всех абстрактных классов в коде должно сопровождаться wildcard'ом типа Resource<?> resource = ... . Поделитесь вашим мнением по поводу увиденного и подкрепите ваши доводы, best practic'ами, подходами итд. Заранее вам благодарен .
...
Рейтинг: 0 / 0
Generics на уровне классов и возможны ли излишества
    #37634948
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sternкогда при объявлении класса потомка, классу родителю в дженерик тип передается тип класс потомка
когда при объявлении класса родителя, в дженерик тип передается тип класса потомка


а делегирование активно используется?
...
Рейтинг: 0 / 0
Generics на уровне классов и возможны ли излишества
    #37634957
Stern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miha_S7,

Есть класс мною созданный JPADelegate в перспективе что народ будет успешно это дело развивать и писать делегаты выше, но народ плюнул на это дело. Если развивать вашу идею то вы предлогаете что бы каждый класс модели имел свой собственный делегат заточенный именно под его тип ?
...
Рейтинг: 0 / 0
Generics на уровне классов и возможны ли излишества
    #37634973
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stern,

ну да, примерно так. Но, имхо, это имеет смысл только если нужно использовать какие-то методами делегата, которые не входят в список методов делегирующего класса. Я с такой методологией не сталкивался. Просто данное применение - первое, что пришло в голову, больше навскидку идей нет.
...
Рейтинг: 0 / 0
Generics на уровне классов и возможны ли излишества
    #37635296
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя вот тут подобная техника используется для построения иерархии
Ctrl+F, "Declare the child list as a List<N> and add the this object in the subclass constructor"
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Generics на уровне классов и возможны ли излишества
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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