Size: a a a

2020 August 23

A

Adevald in learn.java
Anton
Вот несколько практических примеров, как работать с generics
https://annimon.com/article/2637

Для понимания хорошего дизайна могут помочь принципы SOLID и осособенно LSP (Liskov substitution principle).
Если не работаете с элементами коллекции, как с одним типом, возможно не стоит складывать их в коллекцию, а лучше посмотреть паттерны проектирования и пересмотреть дизайн. Без конкретики задачи не понятно что у вас не так.
Нужно произвести инициализцию некоторого количества классов лишь единожды, без возможности позже добавлять/удалять экземпляры.
источник

SS

Stanislau Stasiukevi... in learn.java
ImmutableList вам в помощь
источник

A

Adevald in learn.java
Stanislau Stasiukevich
ImmutableList вам в помощь
А как он работает? условно в один момент все экземпляры инициализируются в List. а потом на основе его создаётся Immutable?
источник

A

Adevald in learn.java
в какой момент он становится Immutable?
источник

SS

Stanislau Stasiukevi... in learn.java
инициализация проходит в один момент, те вам нужно засунуть все элементы одной операцией
источник

SS

Stanislau Stasiukevi... in learn.java
api это позволяет сделать
источник

A

Adevald in learn.java
Не совсем понял о каком api говорится
источник

A

Adevald in learn.java
java.util?
источник

A

Adevald in learn.java
Нашёл его. буду разбираться. спасибо.
источник

SS

Stanislau Stasiukevi... in learn.java
Anton
Вот несколько практических примеров, как работать с generics
https://annimon.com/article/2637

Для понимания хорошего дизайна могут помочь принципы SOLID и осособенно LSP (Liskov substitution principle).
Если не работаете с элементами коллекции, как с одним типом, возможно не стоит складывать их в коллекцию, а лучше посмотреть паттерны проектирования и пересмотреть дизайн. Без конкретики задачи не понятно что у вас не так.
присоединяюсь к словам коллеги, вот мастхэв пейджа про паттерны с описанием и примерами
https://refactoring.guru/ru/design-patterns/catalog
источник

A

Adevald in learn.java
Красиво сделали, душевно. Буду постигать
источник

A

Anton in learn.java
Adevald
в какой момент он становится Immutable?
Они не immutable, а unmodifiable. Т.е. попытка вызвать add и прочие методы изменения выдаст ошибку. Но сами обьекты можно получать и менять без ограничений.
Например List.of()  или Collections.unmodifiableList()

Не очень понимаю, как это уже связано с проблемой приведения типов. По сути лист - контейнер, вроде спринга. Тогда по дизайну стоит посмотреть доклад Евгений Борисов — Spring-построитель, где с нуля на чистой java строится контейнер инициализации и раскрыта нюансы дизайна подобных задач
https://youtu.be/rd6wxPzXQvo
источник

A

Adevald in learn.java
Anton
Они не immutable, а unmodifiable. Т.е. попытка вызвать add и прочие методы изменения выдаст ошибку. Но сами обьекты можно получать и менять без ограничений.
Например List.of()  или Collections.unmodifiableList()

Не очень понимаю, как это уже связано с проблемой приведения типов. По сути лист - контейнер, вроде спринга. Тогда по дизайну стоит посмотреть доклад Евгений Борисов — Spring-построитель, где с нуля на чистой java строится контейнер инициализации и раскрыта нюансы дизайна подобных задач
https://youtu.be/rd6wxPzXQvo
Я видел реализации только через конструктор который принимает List и создаёт ImmutableList. Предполагаю что по памяти это не самая эффективная операция.
источник

A

Anton in learn.java
Adevald
Красиво сделали, душевно. Буду постигать
Особено в данном случае стоит посмотреть запахи кода, в частности Refused Bequest
https://refactoring.guru/ru/smells/refused-bequest
источник

A

Adevald in learn.java
Anton
Особено в данном случае стоит посмотреть запахи кода, в частности Refused Bequest
https://refactoring.guru/ru/smells/refused-bequest
Да, помню как - то крепко сам с собой поспорил на тему того что наследование - зло. И что в мире на самом деле ничто не наследуется, а агрегируется и композицируется(??).
источник

A

Anton in learn.java
Adevald
Да, помню как - то крепко сам с собой поспорил на тему того что наследование - зло. И что в мире на самом деле ничто не наследуется, а агрегируется и композицируется(??).
Дело даже не в наследовании как таковом, а способах применения.

Озвученных задача очень напоминает контейнер инициализации  любых наследников от Object) - одна из самых шаблонных задач ООП. А значит принцип Inversion of Control Containers (IoC) и шаболон Dependency Injectionтут подходят лучше, чем просто коллекция разнородных  и последующее явное приведение типов при получении из неё.
источник

VS

Vlada Shamshukaeva in learn.java
Переслано от Vlada Shamshukaeva
Всем привет, кто нибудь знает как обратно развернуть лямбда выражение??
источник

VS

Vlada Shamshukaeva in learn.java
Переслано от Vlada Shamshukaeva
itemView.setOnClickListener(v -> onItemClickListener.onItemClick(item)); вот эта строчка уже была в проекте, а я не совсем понимаю что внутри
источник

A

Anton in learn.java
Vlada Shamshukaeva
Переслано от Vlada Shamshukaeva
Всем привет, кто нибудь знает как обратно развернуть лямбда выражение??
Как то так:
itemView.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      onItemClickListener.onItemClick(item);
   }
});
источник

VS

Vlada Shamshukaeva in learn.java
Спасибо
источник