Autoboxing (bất biến) - 1

"Chào, Amigo!"

"Hôm nay tôi sẽ kể về autoboxing . AutoBoxing có nghĩa là tự động đặt một thứ gì đó vào hộp."

"Bạn sẽ nhớ rằng Java có các kiểu kế thừa lớp Đối tượng, cũng như các kiểu nguyên thủy. Nhưng hóa ra những thứ tiện lợi như các tập hợp và tổng quát chỉ hoạt động với các kiểu kế thừa Đối tượng."

"Sau đó, quyết định được đưa ra là tạo ra một bản sao không nguyên thủy của mọi loại nguyên thủy."

loại nguyên thủy đối tác không nguyên thủy
byte byte
ngắn Ngắn
int số nguyên
dài Dài
trôi nổi Trôi nổi
gấp đôi Gấp đôi
boolean Boolean
than Tính cách
khoảng trống vô hiệu

"Nhưng thật bất tiện khi phải chuyển đổi giữa các loại này mọi lúc:"

int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();

"Đặc biệt là khi làm việc trực tiếp với các bộ sưu tập:"

Ví dụ
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
 list.add( new Integer(i));
}

"Đó là lý do tại sao những người tạo ra Java đã phát minh ra «hộp thư tự động» cho các kiểu nguyên thủy của họ và 'mở hộp' cho các kiểu không nguyên thủy của chúng."

"Đây là cách nó hoạt động:

Những gì bạn nhìn thấy Điều gì thực sự xảy ra
int x = 3;
Integer y = x + 1;
int x = 3;
Integer y = Integer.valueOf(x + 1);
int z = y;
int z = y.intValue();
Boolean b = Boolean.FALSE;
boolean a = b;
Boolean b = Boolean.FALSE;
boolean a = b.booleanValue();
Integer x = null;
int y = x;
Integer x = null; int y = x.intValue(); //Throws an exception

"Tất cả đều đơn giản. Bạn có thể gán các kiểu int và Integer cho nhau và trình biên dịch sẽ lo mọi việc khác."

"Thật là tiện."

"Vâng. Nhưng có những sắc thái mà tôi sẽ nói sau."