По какой причине классы Wrapper (такие как Integer, Double и т. Д.) Не имеют установщика для их внутреннего примитивного значения?
Я спрашиваю об этом, потому что такого рода функциональность упростила бы исчисление и сделала бы язык Java немного более гибким.
Позвольте привести несколько примеров.
1) Давайте рассмотрим следующий пример:
Integer x = new Integer(5);
x++;
Предыдущий скрытый код выполняет автобокс. Что-то вроде:
int x_tmp = x.intValue();
x_tmp++;
x = new Integer(x_tmp); // Yes that's a new memory allocation
Из-за этой проблемы вычисление на Wrapper выполняется медленнее, чем на простых примитивных типах. С установщиком было бы проще увеличить внутреннее значение без выделения другого объекта в куче.
2) Другая проблема, которая меня беспокоит, заключается в том, что в Java невозможно написать функцию подкачки, как я могу сделать в C (с помощью указателей) или в C ++ (указатели или ссылки).
Если я напишу void swap(Integer x, Integer y)
, я не могу получить доступ к внутреннему значению, потому что, и я не смогу поменять значения.
PS:
Мой друг предложил мне рассмотреть более широкую картину и подумать о параллелизме и неизменности типов.
Так у вас есть объяснение этому?
Спасибо!