Невозможно назначить примитивы массиву объектов в Eclipse - PullRequest
4 голосов
/ 04 июня 2019

Я инициирую массив объектов, как показано ниже:

Object a[] = new Object[4];

a[0] = 1; //while assigning integer value, am getting an error: "Type mismatch: Cannot convert Integer to Object
a[1] = 'A'; //while assigning char value, am getting an error: "Type mismatch: Cannot convert char to Object
a[2] = 12.33//while assigning integer value, am getting an error: "Type mismatch: Cannot convert double to Object
a[3] = "Hello"; //Accepting only string values.

Пожалуйста, предложите, где пошло не так? это проблема конфигурации? Я использую:

Java Version jdk1.8.0_151,
jre1.8.0_151,

Eclipse Java EE IDE for Web Developers.
Version: Oxygen.2 Release (4.7.2)
Build id: 20171218-0600

Ответы [ 3 ]

4 голосов
/ 04 июня 2019

Это именно то сообщение об ошибке, которое вы получите, если используете уровень соответствия компилятора ниже 5. Обратите внимание, что это отличается от версии Java в вашей системе.Смотрите исправление здесь https://stackoverflow.com/a/24591529/11595728.

4 голосов
/ 04 июня 2019

int, float, double и char являются типами primitive, поэтому их нельзя "преобразовать" в Object.

String с Object s, следовательно, можно добавить в массив.

Чтобы достичь того, чего вы, вероятно, хотите, вы можете преобразовать их в эквивалентный объект:

Object a[] = new Object[4];
a[0] = Integer.valueOf(1); 
a[1] = Character.valueOf('A');
a[2] = Float.valueOf(12.33);
a[3] = "Hello";
1 голос
/ 04 июня 2019

Я не столкнулся с проблемой, которую вы описали. Я думаю, что это автоматически в штучной упаковке, по крайней мере, в моей среде конфигурации.

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Object a[] = new Object[4];

        a[0] = 1; //while assigning integer value, am getting an error: "Type mismatch: Cannot convert Integer to Object
        a[1] = 'A'; //while assigning char value, am getting an error: "Type mismatch: Cannot convert char to Object
        a[2] = 12.33;//while assigning integer value, am getting an error: "Type mismatch: Cannot convert double to Object
        a[3] = "Hello"; //Accepting only string values.
        for(Object i:a) {
            System.out.println(i.toString());
        }
    }

щелчок правой кнопкой мыши -> Запуск от имени -> Приложение Java, вывод консоли:

1
A
12.33
Hello
...