Почему я могу присвоить массив объекту?

96
18 июня 2021, 22:50

Почему в строке с комментарием не дает ошибку компиляции? Пробовал с другими ссылочными типами - там все нормально, ошибка компиляции, а в случае с типом Object ничего подобного...

public static void main(String[] args) {
        int[] nums = new int[]{1,0,2};
        Object p = nums; //почему данная строка компилируется???
        int[] two = (int[])p;
        System.out.println(10/two[2]);
    }

Что здесь такого элементарного, что я не вижу настолько, что в прям удивлен?

Answer 1

Компилируется, потому что массив - это объект.

An object (§4.3.1) is a dynamically created instance of a class type or a dynamically created array. All objects, including arrays, support the methods of class Object (§4.3.2).

READ ALSO
Свой UI для JScrollPane

Свой UI для JScrollPane

При создании фрейма, я создаю JScrollPane, получаю его JScrollBar и переопределяю для него свой UI ScrollgetVerticalScrollBar()

97
Распаковка apk и работа с исходным кодом

Распаковка apk и работа с исходным кодом

Работаю в Android Studio и написал небольшое приложение, после чего запаковал в apkПосле решил apk открыть и попробовать изменить, но при декомпиляции...

85
Оператор == и сравнение

Оператор == и сравнение

Переменные примитивных типов состоят из битов и представляют свои значения, ссылочные переменные содержат биты, которые описывают способ...

79
Post запрос с исключенными полями XML

Post запрос с исключенными полями XML

Такая проблемаУ меня на пост запрос приходит String с xml

81