Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Изолированные классы  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 1953
Привет, всех с пятницей)
Натолкнулся недавно на понятие изолированные классы, почитал, посмотрел примеры, немного не вкурил.
Можете дошкольнику объяснить на пальцах что это такое и какая у них сфера применения?)
13 ноя 20, 21:55    [22231752]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Как этот термин звучал в англоязычном варианте?
13 ноя 20, 22:09    [22231758]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
chpasha
Member

Откуда:
Сообщений: 10035
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.



Сообщение было отредактировано: 13 ноя 20, 22:21
13 ноя 20, 22:24    [22231762]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
https://habr.com/ru/company/otus/blog/527928/ Запечатанные классы
13 ноя 20, 22:24    [22231763]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 1953
mayton
Как этот термин звучал в англоязычном варианте?


Sealed.

Вадя уже скинул ссылку, читаю, идея пока ускользает.
13 ноя 20, 22:39    [22231768]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Я помню этот термин. Я его читал у Хорстмана в его Scala-книжке.
13 ноя 20, 22:48    [22231774]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Брайн Гоетс его предложил в 2019 году и получается что в JDK-15 уже имплементировано
судя по этой бумажке.

https://openjdk.java.net/jeps/360
13 ноя 20, 22:50    [22231777]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Zzz79
Member

Откуда:
Сообщений: 1005
это что то шибко новое- пока никто не юзал я думаю) спроси через 2 года
13 ноя 20, 22:53    [22231780]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 1953
chpasha,
Я почитал, там один из примеров понятен, одно из назначений такого типа класса-
Изолированный класс позволяет указывать, какие классы ( по аналогии с implements, где мы перечисляем обязательные к реализации методы) могут его наследовать. Это понятно, в принципе полезно. Но дальше начинается кислота
14 ноя 20, 00:32    [22231811]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
Если лично вам не требуется сложный дизайн иерархии классов - это ещё ничего не значит.
14 ноя 20, 00:35    [22231813]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 1953
Basil A. Sidorov
Если лично вам не требуется сложный дизайн иерархии классов - это ещё ничего не значит.


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

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

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

Тяжело без крупных проектов и практики в общем втащить это понятие)
14 ноя 20, 00:55    [22231821]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Эти многие пропозиции в JCP как и в комитетах С++ появляются не из космоса.
Вся функциональщина (lambda, e.t.c.) была создана еще в середине 20-го века. И многие идеи
которые кажутся новыми на самом деле уже много раз пережевывались в других
языках и системах.

Мне тут чем интересна отсылка к Scala. Книга 2013 года. Фича Sealed уже существовала.
И я думаю интересно проследить ее генезис.
14 ноя 20, 01:05    [22231826]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
Не ну вовремя чо, и 10 лет не прошло
По иронии судьбы сделали sealed в java когда в скале сделали им нормальную замену в виде енумов(единственное что было хуже в скале чем в джаве).Если честно не понимаю смысла совсем, учитывая что алгебраические типы данных вряд-ли взлетят, паттерн матчинг тоже кастрированный, да и реально в джаве крутые енумы, нафиг огород городить..
Goetz вроде умный мужик же, но все никак не поймет что нету особого смысла пытаться делать java более функциональной не убирая мутабельность. А мутабельность не ограничить из-за обратной совместимости. С опшионалом обосрались, стримы тоже такое себе.. единственное что лямбды сделали более менее, но и те из-за слабого inference корявенькие. Теперь вот обсер с паттерн матчингом и sealed. Хотя вот рекорды смотрятся ещё симпатично, если бы не невозможность добавлять методы и поля
Короче джава медленно но верно превращается в винегрет возможностей, но в отличие от скалы без связующей парадигмы. Переходили б уже на Котлин что-ли и не мучали старушку джаву
14 ноя 20, 01:12    [22231828]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Давайте придумаем софистический пример.

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

(это в Scala)
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
}
14 ноя 20, 01:18    [22231830]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
Блин по теме то совсем забыл
В общем, тебе как обычному джава программисту этот sealed не впился. Это скорее задел на будущее, видимо в дальнейшем будут пытаться протянуть алгебраические типы данных и typeclass паттерн. На данный момент вижу два более мене осмысленных применения sealed
1) Для особо упоротых это возможность дать понять JVM что вариантов реализации мало и компилятор может соптимизмровать на времени вызова подставив би- либо триморфный вызов вместо динамического диспатча. Ключевое слово упоротых
2) Если делаешь паттерн матчинг на объекте с типом интерфейса и не предоставляет ветку для какого-либо подкласса то компилятор сгенерирует ворнинг, мол лажа у тебя и этот подкласс никак не обрабатывается. Почему нельзя просто взять енум остаётся загадкой
14 ноя 20, 01:21    [22231832]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton,

И чем энум не устраивает?
14 ноя 20, 01:23    [22231835]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
забыл ник
mayton,

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

Погоди. Дай закончу.
14 ноя 20, 01:28    [22231838]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Как-то так. 100% детерминизм матчинга. И этот матчинг в фазе компилляции
уже проверен. В нем не будет новых и неизвестных классов и мы никогда
не получим ошибку даункастинга к неизвестному новому наследнику.

  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!"
    }
  }
14 ноя 20, 01:33    [22231839]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
И здесь не нужен полиморфизм. Оптимизирующий компиллятор (не Java а другой) может
использовать широкий спектр подходов чтобы вообще его убрать. ООП приходит смерть.
На арену выходит ФП.
14 ноя 20, 01:35    [22231841]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Хотя может я ошибаюсь. Может default case нужен. Но у нас -же пятница? не?
14 ноя 20, 01:37    [22231843]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton,

Так чем енам то не подходит?
14 ноя 20, 01:37    [22231844]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Дружище я на самом деле не силен во всех фичах Scala.

Давай я закину тебе еще идейку.
14 ноя 20, 01:38    [22231846]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
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...:("
    }
  }

}
14 ноя 20, 01:40    [22231848]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton
Дружище я на самом деле не силен во всех фичах Scala.

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

Так мы про джаву же.
Про скалу все и так понятно, в общих чертах ты правильно описал. Только вот эту трихомандию с sealed по историческим причинам сделали потому что не было нормальных енумов. А в скале 3 их наконец-то запили Ржачно конечно получается
14 ноя 20, 01:40    [22231850]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton
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 мутабельное это акций гемор
14 ноя 20, 01:43    [22231852]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
А я всем говорю - курите первоисточник. Всё что JCP предлагает - это вторичные пережованные идеи.
Очень мало в программировании нового в наше время. Можно назвать новым применение глубоких
нейросеток - но это мать ево НЕ программирование а математика. Там по настоящиму надо учиться.
И не спринг с хибернейтом.

Что вообще вы можете назвать новым?
14 ноя 20, 01:49    [22231862]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
И тот паттерн-матчинг - не настоящий.

Вот настоящий. Это по идее Haskell. Но я пишу от руки поэтому оно нихрена не скомпилируется но идея такая.

data MyDataType = Sun | Mon | Tue ......

whatToDo(Sat) = "Hehe"
whatToDo(Sun) = "Hurray"
whatToDo(_) = "Ouch...:("


Тоесть я свёл все это дерьмо к декларации трех функций. А не к псевдо-switch оператору.

Больше нет ничего. Ни полиморфизьма. Ни объектов. Мир застывшей логики.
14 ноя 20, 01:57    [22231865]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton,

Ну самое новое это наверное dependent types, хотя разрабатывать теорию начали давно, только недавно появилась реальная перспектива промышленного применения.
Из интересных идей также отмечу работу с памятью в Rust, которая безопасная управляемая и быстрая. И никаких gc.
Также интересна идея STM. Транзакционная память тоже немолодая идея, но наконец то его можно пробовать в реальных проектах.
Ну и касаемо больше fp - есть такой стиль написания программы как final tagless encoding, очень большой потенциал для убийства ООП.
14 ноя 20, 02:05    [22231867]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.
14 ноя 20, 02:11    [22231870]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton
И тот паттерн-матчинг - не настоящий.

Вот настоящий. Это по идее Haskell. Но я пишу от руки поэтому оно нихрена не скомпилируется но идея такая.

data MyDataType = Sun | Mon | Tue ......

whatToDo(Sat) = "Hehe"
whatToDo(Sun) = "Hurray"
whatToDo(_) = "Ouch...:("


Тоесть я свёл все это дерьмо к декларации трех функций. А не к псевдо-switch оператору.

Больше нет ничего. Ни полиморфизьма. Ни объектов. Мир застывшей логики.


Ну скаловский паттерн матчинг конечно более развесистый но и более мощный чем у хаскеля. А вот что касается того что под соусом паттерн матчинг а пытаются всунуть в джаву.... Там да, бессмысленно и беспощадно, я о том и говорю. Лепят какие то полу-недо-фичи обрезанные и которые невозможно юзать в идиоматическом стиле и на мой взгляд только усложняют язык. Но видимо уплочено
14 ноя 20, 02:12    [22231871]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.

Угу, а загрязнение и приводит к смерти. Ниша сильно сузится. Вообще не понимаю стартов новых проектов на джаве. Не нравится скала или кложур - на тебе котлин
14 ноя 20, 02:14    [22231873]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Мир Java ентерпрайза пока зиждется на строгом убеждении что write once ... works everywhere.
И пока это работает бинарникам ничего не грозит. Вот как долго без эволюции OpenJDK и Oracle
смогут удерживать JVM в состоянии поддержки. Старые фичи тянут на дно как гиря. Сама JVM
это по сути калькулятор Mk-60. Там даже нет намёка на команды поддержки SSE1/2/3, AVX.

Мы не можем собрать эффективный H.264 декодер видео на Java не потому что она плоха
а потому что у нас нет прямого управления фичами современного процессора. Я шутки
ради создал топик где я делаю интринзик на ассемблере x86 в Java коде но в этой шутке
я ждал реакции форума. Что скажут?
14 ноя 20, 02:19    [22231875]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
Сергей Лалов
у меня иерархия глубиной дай бог классов в 3
"Глубина наследования" и "сложность иерархии" - вещи сугубо "попиндикулярные". В контексте запечатанных (sealed) классов - особенно.
14 ноя 20, 08:05    [22231909]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

P.S.
Когда же вы все научитесь спокойно относиться к фичами и возможностям, которые не нужны лично вам?..
14 ноя 20, 08:10    [22231911]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
mayton
Что скажут?
Ровно то, что было сказано ещё в античное время: "Богу - богово, а кесарю - кесарево".
Для платформы, которая "бегает везде" нет смысла тянуть в язык фичу, доступную "почти нигде". Сначала - более-менее массовое внедрение и уже потом - поддержка платформы.
При этом, что характерно, никто не мешает сделать так, как вам хочется - собственно JVM требует для своей работы всего пяти классов. Всё остальное вы можете переделать. Если не создавать собственный компилятор - кое-что придётся оставить как есть.
14 ноя 20, 08:23    [22231912]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
Basil A. Sidorov
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

P.S.
Когда же вы все научитесь спокойно относиться к фичами и возможностям, которые не нужны лично вам?..

Ну у нас тут все либо-писатели сидят конечно. Перефразируя, упоротого прикладного программиста, надеюсь стало легче.
Sealed в скале я использую уже 5 лет и в хвост и в гриву,
так что не надо мне рассказывать про нужнгсть. применение у этой фичи в основном такое -
1) замена энумам
2) более безопасный по отношению к рантайм ошибкам паттерн матчинг.
Оба этих кейса легко покрываются хорошо имплементированными энамами, что в джаве на редкость хорошо сделано.
Я конечно допускаю, что чего-то не понимаю и в этом случае тебе не составит труда привести пару кейсов для которых sealed просто необходим
14 ноя 20, 12:53    [22232003]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
забыл ник
не составит труда привести пару кейсов для которых sealed просто необходим
Закрыть реализацию.
Исторический пример - "Sealed: true" в манифесте jar-файла.
Зачем может быть нужно?
В java-классе доступ по умолчанию "в пределах пакета". Предположим, что я реализовал некий "чувствительный" класс, который используется другими классами в том же пакете. Работа с лицензиями или что-нибудь этакое. Наследоваться от такого класса бессмысленно - "важные" методы и переменные не имеют модификаторов доступа, а значит и у наследников не будет доступа "куда не надо".
Но, если "чужак" поместит в этот пакет собственный класс, то сможет получить "некие преференции", которых разработчик трудолюбиво его лишал. Просто создаём собственный класс в пакете разработчика, кладём его "рядышком" и - всё. "Взлом" делается на уровне скрипта запуска.
Если jar "запечатан", то классы любых его пакетов будут загружаться строго из одного места, а значит не будет работать или класс "взломщика" или класс разработчика.
Понятное дело, что такая "защита" тривиально обходится переупаковкой jar-файла, но во многих случаях и такой вариант "защиты" более чем достаточен.

Аналогично и с запечатанными классами. Есть интерфейс (абстрактный класс), который должен быть реализован (расширен) только разработчиком и никем кроме него. При этом разработчику требуется несколько реализаций. Запечатываем (только) интерфейс (класс) и получаем гарантию, что "никто кроме нас".
14 ноя 20, 13:21    [22232016]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз. В общем так ничего убедительного и не услышал.
Насчёт sealed пакетов, кстати интереснее - давно задумывался почему виртуальная машина даёт загружать пекедди с одинаковым именем с разных источников.
14 ноя 20, 14:39    [22232048]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10760
забыл ник
Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
А подумать? Ограничивается не доступ собственного (контролируемого) кода, а доступ "посторонних" к возможностям собственного кода.

P.S.
"Я ему - покажи. А он мне - в нашем клубе джентельменам верят на слово. И тут мне карта как попрёт"
14 ноя 20, 14:56    [22232058]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
забыл ник
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз.

Я вижу себе смысл не в секюрности а в создании непротиворечивой доменной модели.
Тоесть если вы определили sealed class Gender - то у вас будет строго детерминированный
набор типов Male, Female, Male-To-Female .e.t.c. сколько наша medical insurance system
поддерживает типов клиентов. И никто кроме архитектора не подкинет новых.

Это можно сказать так. Final class - это ограничитель по "вертикали" диаграмме наследования
а sealed - лимит по "горизонтали" или по quantity.
14 ноя 20, 16:44    [22232090]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
забыл ник

Насчёт sealed пакетов, кстати интереснее - давно задумывался почему виртуальная машина даёт загружать пекедди с одинаковым именем с разных источников.

Я думаю что фразу "дает загружать" надо расписать как некую последовательность шагов.
Или поисковых операций.
14 ноя 20, 16:48    [22232093]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49762
Некоторые sealed scala classes:

sealed trait Nothing
sealed trait Null


private[immutable] sealed abstract class MapNode[K, +V] extends Node[MapNode[K, V @uV]] {
.....
sealed abstract class Stream[+A] extends AbstractSeq[A]
.....
16 ноя 20, 01:56    [22232563]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Java Ответить