powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Изолированные классы
25 сообщений из 41, страница 1 из 2
Изолированные классы
    #40018132
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, всех с пятницей)
Натолкнулся недавно на понятие изолированные классы, почитал, посмотрел примеры, немного не вкурил.
Можете дошкольнику объяснить на пальцах что это такое и какая у них сфера применения?)
...
Рейтинг: 0 / 0
Изолированные классы
    #40018134
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как этот термин звучал в англоязычном варианте?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018136
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sealed?

для чего, написано в первоисточнике

https://openjdk.java.net/jeps/360 Goals

Allow the author of a class or interface to control which code is responsible for implementing it.
Provide a more declarative way than access modifiers to restrict the use of a superclass.
Support future directions in pattern matching by underpinning the exhaustive analysis of patterns.

Non-Goals

It is not a goal to provide new forms of access control such as "friends".
It is not a goal to change final in any way.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018137
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://habr.com/ru/company/otus/blog/527928/ Запечатанные классы
...
Рейтинг: 0 / 0
Изолированные классы
    #40018141
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Как этот термин звучал в англоязычном варианте?


Sealed.

Вадя уже скинул ссылку, читаю, идея пока ускользает.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018143
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я помню этот термин. Я его читал у Хорстмана в его Scala-книжке.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018146
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Брайн Гоетс его предложил в 2019 году и получается что в JDK-15 уже имплементировано
судя по этой бумажке.

https://openjdk.java.net/jeps/360
...
Рейтинг: 0 / 0
Изолированные классы
    #40018174
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Я почитал, там один из примеров понятен, одно из назначений такого типа класса-
Изолированный класс позволяет указывать, какие классы ( по аналогии с implements, где мы перечисляем обязательные к реализации методы) могут его наследовать. Это понятно, в принципе полезно. Но дальше начинается кислота
...
Рейтинг: 0 / 0
Изолированные классы
    #40018176
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если лично вам не требуется сложный дизайн иерархии классов - это ещё ничего не значит.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018181
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Если лично вам не требуется сложный дизайн иерархии классов - это ещё ничего не значит.


Согласен, более того, даже если вам все таки требуется сложный дизайн иерархии классов-- это тоже ещё ничего не значит. О_О

Я в джаве относительно новичок, у меня иерархия глубиной дай бог классов в 3

Имею в виду именно структурное взаимодействие. Понимаю о чем вы.

Тяжело без крупных проектов и практики в общем втащить это понятие)
...
Рейтинг: 0 / 0
Изолированные классы
    #40018184
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти многие пропозиции в JCP как и в комитетах С++ появляются не из космоса.
Вся функциональщина (lambda, e.t.c.) была создана еще в середине 20-го века. И многие идеи
которые кажутся новыми на самом деле уже много раз пережевывались в других
языках и системах.

Мне тут чем интересна отсылка к Scala. Книга 2013 года. Фича Sealed уже существовала.
И я думаю интересно проследить ее генезис.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018186
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ну вовремя чо, и 10 лет не прошло
По иронии судьбы сделали sealed в java когда в скале сделали им нормальную замену в виде енумов(единственное что было хуже в скале чем в джаве).Если честно не понимаю смысла совсем, учитывая что алгебраические типы данных вряд-ли взлетят, паттерн матчинг тоже кастрированный, да и реально в джаве крутые енумы, нафиг огород городить..
Goetz вроде умный мужик же, но все никак не поймет что нету особого смысла пытаться делать java более функциональной не убирая мутабельность. А мутабельность не ограничить из-за обратной совместимости. С опшионалом обосрались, стримы тоже такое себе.. единственное что лямбды сделали более менее, но и те из-за слабого inference корявенькие. Теперь вот обсер с паттерн матчингом и sealed. Хотя вот рекорды смотрятся ещё симпатично, если бы не невозможность добавлять методы и поля
Короче джава медленно но верно превращается в винегрет возможностей, но в отличие от скалы без связующей парадигмы. Переходили б уже на Котлин что-ли и не мучали старушку джаву
...
Рейтинг: 0 / 0
Изолированные классы
    #40018187
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте придумаем софистический пример.

Я вот только что придумал.

(это в Scala)
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
sealed class DayOfWeek {
  case class Mon() extends DayOfWeek
  case class Tue() extends DayOfWeek
  case class Wen() extends DayOfWeek
  case class Thi() extends DayOfWeek
  case class Fri() extends DayOfWeek
  case class Sat() extends DayOfWeek
  case class Sun() extends DayOfWeek
}
...
Рейтинг: 0 / 0
Изолированные классы
    #40018189
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин по теме то совсем забыл
В общем, тебе как обычному джава программисту этот sealed не впился. Это скорее задел на будущее, видимо в дальнейшем будут пытаться протянуть алгебраические типы данных и typeclass паттерн. На данный момент вижу два более мене осмысленных применения sealed
1) Для особо упоротых это возможность дать понять JVM что вариантов реализации мало и компилятор может соптимизмровать на времени вызова подставив би- либо триморфный вызов вместо динамического диспатча. Ключевое слово упоротых
2) Если делаешь паттерн матчинг на объекте с типом интерфейса и не предоставляет ветку для какого-либо подкласса то компилятор сгенерирует ворнинг, мол лажа у тебя и этот подкласс никак не обрабатывается. Почему нельзя просто взять енум остаётся загадкой
...
Рейтинг: 0 / 0
Изолированные классы
    #40018190
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

И чем энум не устраивает?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018191
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
mayton,

И чем энум не устраивает?

Погоди. Дай закончу.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018192
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так. 100% детерминизм матчинга. И этот матчинг в фазе компилляции
уже проверен. В нем не будет новых и неизвестных классов и мы никогда
не получим ошибку даункастинга к неизвестному новому наследнику.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  sealed class DayOfWeek
    case class Mon() extends DayOfWeek
    case class Tue() extends DayOfWeek
    case class Wen() extends DayOfWeek
    case class Thi() extends DayOfWeek
    case class Fri() extends DayOfWeek
    case class Sat() extends DayOfWeek
    case class Sun() extends DayOfWeek

  def main(arg: Array[String]): Unit = {
    def whatToDo(dayOfWeek: DayOfWeek): String = dayOfWeek match {
      case Sat() => "Hurray!"
      case Sun() => "Yahoo!"
    }
  }
...
Рейтинг: 0 / 0
Изолированные классы
    #40018194
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И здесь не нужен полиморфизм. Оптимизирующий компиллятор (не Java а другой) может
использовать широкий спектр подходов чтобы вообще его убрать. ООП приходит смерть.
На арену выходит ФП.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018195
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя может я ошибаюсь. Может default case нужен. Но у нас -же пятница? не?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018196
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Так чем енам то не подходит?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018197
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дружище я на самом деле не силен во всех фичах Scala.

Давай я закину тебе еще идейку.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018199
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
object Main {

  sealed class DayOfWeek
    case class Mon() extends DayOfWeek
    case class Tue() extends DayOfWeek
    case class Wen() extends DayOfWeek
    case class Thi() extends DayOfWeek
    case class Fri() extends DayOfWeek
    case class Sat() extends DayOfWeek
    case class Sun(message : String) extends DayOfWeek

  def main(arg: Array[String]): Unit = {
    def whatToDo(dayOfWeek: DayOfWeek): String = dayOfWeek match {
      case Sat() => "Hurray!"
      case Sun(_) => "Hurray!"
      case _ => "Okay...:("
    }
  }

}
...
Рейтинг: 0 / 0
Изолированные классы
    #40018200
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Дружище я на самом деле не силен во всех фичах Scala.

Давай я закину тебе еще идейку.

Так мы про джаву же.
Про скалу все и так понятно, в общих чертах ты правильно описал. Только вот эту трихомандию с sealed по историческим причинам сделали потому что не было нормальных енумов. А в скале 3 их наконец-то запили Ржачно конечно получается
...
Рейтинг: 0 / 0
Изолированные классы
    #40018201
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
object Main {

  sealed class DayOfWeek
    case class Mon() extends DayOfWeek
    case class Tue() extends DayOfWeek
    case class Wen() extends DayOfWeek
    case class Thi() extends DayOfWeek
    case class Fri() extends DayOfWeek
    case class Sat() extends DayOfWeek
    case class Sun(message : String) extends DayOfWeek

  def main(arg: Array[String]): Unit = {
    def whatToDo(dayOfWeek: DayOfWeek): String = dayOfWeek match {
      case Sat() => "Hurray!"
      case Sun(_) => "Hurray!"
      case _ => "Okay...:("
    }
  }

}


Сильно сомневаюсь что джава версия паттерн матчинг а такое позволит. Именно про это я и веду речь, если поле message мутабельное это акций гемор
...
Рейтинг: 0 / 0
Изолированные классы
    #40018208
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я всем говорю - курите первоисточник. Всё что JCP предлагает - это вторичные пережованные идеи.
Очень мало в программировании нового в наше время. Можно назвать новым применение глубоких
нейросеток - но это мать ево НЕ программирование а математика. Там по настоящиму надо учиться.
И не спринг с хибернейтом.

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


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