История изменений
Исправление
Legioner,
(текущая версия)
:
Именно в таком виде, выглядит как-то нелогично и вообще нарушает принципы SOLID. Нахрена вообще модификаторы доступа придумывали тогда, если «соседний» класс может свободно ему приватные члены теребонькать ?
Именно в таком виде оно уже работает лет 20. Просто компилятор жавы генерирует скрытый метод и заменяет твоё обращение к приватному члену класса на вызов этого метода. JEP предлагает избавиться от этих искусственных методов и поддержать такое использование на уровне JVM. По сути язык Java и байткод JVM очень похожи, чаще всего конструкции Java компилируется один в один в очевидные конструкции байткода, но есть исключения, например эти самые синтетические методы. В языке Java есть понятие вложенных классов, а для JVM все классы одинаковые и вложенный класс ничем не лучше любого другого класса. Товарищи хотят JVM подогнать поближе под семантику Java.
Предположительно это поможет и Kotlin-у, там вроде private работает в пределах файла, а не класса.
Исходная версия
Legioner,
:
Именно в таком виде, выглядит как-то нелогично и вообще нарушает принципы SOLID. Нахрена вообще модификаторы доступа придумывали тогда, если «соседний» класс может свободно ему приватные члены теребонькать ?
Именно в таком виде оно уже работает лет 20. Просто компилятор жавы генерирует скрытый метод и заменяет твоё обращение к приватному члену класса на вызов этого метода. JEP предлагает избавиться от этих искусственных методов и поддержать такое использование на уровне JVM. По сути язык Java и байткод JVM очень похожи, чаще всего конструкции Java компилируется один в один в очевидные конструкции байткода, но если исключения, например эти самые синтетические методы. В языке Java есть понятие вложенных классов, а для JVM все классы одинаковые и вложенный класс ничем не лучше любого другого класса. Товарищи хотят JVM подогнать поближе под семантику Java.
Предположительно это поможет и Kotlin-у, там вроде private работает в пределах файла, а не класса.