LINUX.ORG.RU

История изменений

Исправление 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 работает в пределах файла, а не класса.