2013-12-17 2 views
1
BufferedImage image = new BufferedImage(Defaults.SCREEN_WIDTH, Defaults.SCREEN_HEIGHT, BufferedImage.TYPE_INT_RGB); 
int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData(); 

Этот код был найден в проекте с открытым исходным кодом, и я просто хочу выяснить, что происходит. Всякий раз, когда я меняю значение «пикселей», он «записывается» в буферное изображение. Я хотя это потому, что целые числа в Java являются примитивными типами, а не ссылочными типами, естественно, массивы целых чисел тоже будут. Итак, я думаю, мой вопрос в том, все ли типы ссылок массивов в Java?Как целочисленный массив может быть ссылочным типом?

+4

Да, все массивы, даже примитивные типы, являются объектами и являются, таким образом, ссылочными типами. – rgettman

ответ

4

Как Chapter 10 of the JLS указывает:

В языке программирования Java, массивы являются объектами (§4.3.1), динамически создаваемые и могут быть отнесены к переменным типа Object (§4.3.2). Все методы класса Object могут быть вызваны в массиве.

Да, все массивы на самом деле являются объектами.

0

Из того, что я вижу, Я предполагаю, что тип «DataBufferInt» был определен таким образом, что он простирается от «java.lang.Integer».
Позже значения сохраняются в int [], несмотря на то, что они являются примитивными из-за особенностей «автоматического бокса» в Java.

Смежные вопросы