Автобокс для String в java - PullRequest
       42

Автобокс для String в java

0 голосов
/ 01 февраля 2020
Integer l = Integer.valueOf("100");   // valid no compilation
Integer l = "100";   //Error : cannot convert from string to integer 

Почему я сталкиваюсь с вышеуказанной ошибкой, пожалуйста, предложите мне. (Нужно использовать концепцию автобокса для второй строки)

Ответы [ 3 ]

2 голосов
/ 01 февраля 2020

Любое значение в кавычках в java обрабатывается как String, а строки являются объектами. Автобокс не поддерживается в JAVA для объектов, поэтому если вам нужно, то вы должны сделать это явно.

Автобокс допускается только от примитивов к классам вапперов.

В следующей таблице перечислены типы примитивов и их соответствующие классы-обертки, которые используются компилятором Java для автоматической упаковки и распаковки:

Primitive type  Wrapper class
boolean         Boolean 
byte            Byte 
char            Character 
float           Float 
int             Integer 
long            Long 
short           Short 
double          Double

Подробнее об этом можно прочитать здесь .

1 голос
/ 01 февраля 2020

С JLS, §5.1.7 :

Преобразование в бокс преобразует выражения примитивного типа в соответствующие выражения ссылочного типа. [...]

"100" в Java имеет тип String. String не является примитивным и поэтому бокс не применяется.

1 голос
/ 01 февраля 2020

Во-первых, это не называется Autoboxing , но это обычный вызов метода stati c с String в качестве параметра. Простейшие примеры автобокса:

Integer i = 1;
Character ch = 'a';

Ваш фрагмент пытается создать экземпляр String как Integer, которые относятся к несовместимым типам Java. Автобокс происходит только для примитивных типов данных.

Integer l = "100";  // Cannot convert from String to Integer 
Integer l = 100;    // Autoboxing happens 
...