Класс Wrapper в Java это класс с примитивным типом данных в качестве члена? - PullRequest
2 голосов
/ 14 февраля 2011

Я хочу знать, как работает класс Integer: Рассмотрим

Integer number=2;

Означает ли это, что класс "Integer" имеет конструктор, как упомянуто ниже, и в нем хранится значение int? Пожалуйста, объясни.

class Integer
{
    int a;

    public Integer (int a)
    {
        this.a=a;
    }
}

Ответы [ 4 ]

6 голосов
/ 14 февраля 2011

Довольно близко. Посмотрите исходный код для Integer (очевидно, из Harmony, поэтому Sun / Oracle JVM может немного отличаться). Преобразования автобокса (когда вы назначаете примитив классу-оболочке) используют эквивалент valueOf, который кэширует «общие» целые числа и создает новые для остальных.

2 голосов
/ 14 февраля 2011

javac генерирует код для вызова Integer.valueOf(int), который может или не может создать новый Integer или просто повторно использовать существующий. В JLS это покрыто «преобразованиями в бокс» .

1 голос
/ 14 февраля 2011

Это означает, что автоматический бокс на месте.

0 голосов
/ 14 февраля 2011

Вы всегда можете найти новейший класс OpenJDK Integer здесь :

Соответствующее поле (из строки 645):

/**
 * The value of the {@code Integer}.
 *
 * @serial
 */
private final int value;
...