Почему в Project Valhalla не представлены изменяемые структуры?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему в Project Valhalla не представлены изменяемые структуры?

Сообщение Anonymous »

Мне кажется, что примитивные классы могли бы вести себя более эффективно (при разумных размерах), если бы они не были неизменяемыми, как предлагается сейчас, а работали бы больше как структуры C.
Учитывая этот примитивный класс

Код: Выделить всё

primitive class Point implements Shape {
public long x;
public long y;

public Point(long x, long y) {
this.x = x;
this.y = y;
}

public boolean contains(Point p) {
return equals(p);
}
}

interface Shape {
boolean contains(Point p);
}
И массив Point[]points = new Point[N];
Почему мы не сможем это сделать ?

Код: Выделить всё

points[0].x = 42;      //lastore
points[1].x++;         //laload, iinc, lastore

Point p = points[2];   //laload, laload
Shape s = p;           //new Point.ref (boxing)
p.x++;                 //iinc
assert !s.contains(p);
Вместо этого создается впечатление, что текущий дизайн предполагает, что вся точка будет прочитана, изменена с помощью withfield и записана обратно целиком, что кажется расточительным, особенно для больших типов. Или компиляторы будут регулярно применять здесь исключение копирования?
Обратите внимание, что Point должен быть сглаженным, а не сглаживаемым, чтобы пользователь мог быть уверен, что он не будет сглаживаться. изменить общий экземпляр.
Может ли кто-нибудь дополнительно разъяснить причину неизменности примитивных типов?
@see
< ul>
[*]JEP 401: Примитивные классы (предварительная версия)
[*]Государство Валгалла – Часть 3: Модель JVM


Подробнее здесь: https://stackoverflow.com/questions/733 ... le-structs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Project Project Project ASP.NET Project Show отсутствует и ошибки «Roslyn/Csc.exe» после открытия в Visual Studio? [закр
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Как аннотировать изменяемые структуры для mypy
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как аннотировать изменяемые структуры для mypy
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как аннотировать изменяемые структуры для Mypy
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как аннотировать изменяемые структуры для Mypy
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»