NỘI DUNG BÀI VIẾT
Autoboxing trong java đã được giới thiệu trong Java 1.5. Trong Java, Autoboxing và Unboxing là một cách thuận tiện để tự động chuyển đổi kiểu dữ liệu nguyên thủy sang các lớp trình bao bọc java tương ứng của nó và ngược lại.
Autoboxing trong Java
Việc chuyển đổi một kiểu dữ liệu nguyên thủy thành một đối tượng của lớp trình bao bọc tương ứng được gọi là autoboxing. Ví dụ, chuyển đổi int thành Integer hoặc chuyển đổi long thành Long đối tượng.
Trình biên dịch Java áp dụng autoboxing khi giá trị nguyên thủy là:
- Được truyền dưới dạng tham số cho một phương thức mong đợi một đối tượng của lớp trình bao bọc tương ứng. Ví dụ, một phương thức với đối số Integer có thể được gọi bằng cách truyền int, trình biên dịch java sẽ thực hiện chuyển đổi int thành Integer.
- Được gán cho một biến của lớp trình bao bọc tương ứng. Ví dụ: gán một đối tượng Long cho biến long.
Unboxing trong Java
Việc chuyển đổi một đối tượng của kiểu wrapper sang kiểu dữ liệu nguyên thủy tương ứng của nó được gọi là unboxing.
- Được truyền dưới dạng tham số cho một phương thức mong đợi một giá trị của kiểu nguyên thủy tương ứng.
- Được gán cho một biến của kiểu nguyên thủy tương ứng.
Ví dụ về Java Autoboxing
Đây là một chương trình java nhỏ hiển thị các ví dụ về autoboxing và unboxing trong java.
import java.util.ArrayList;
import java.util.List;
public class AutoboxingUnboxing {
public static void main(String[] args) {
int i = 5;
long j = 105L;
// passed the int, will get converted to Integer object at Runtime using
// autoboxing in java
doSomething(i);
List<Long> list = new ArrayList<>();
// java autoboxing to add primitive type in collection classes
list.add(j);
}
private static void doSomething(Integer in) {
// unboxing in java, at runtime Integer.intValue() is called implicitly to
// return int
int j = in;
// java unboxing, Integer is passed where int is expected
doPrimitive(in);
}
private static void doPrimitive(int i) {
}
}
Code language: PHP (php)
Lưu ý: Không phải là một ý kiến hay nếu bạn luôn luôn sử dụng autoboxing, đôi khi nó có thể gây ra lỗi trình biên dịch khiến phương thức không rõ ràng khi một phương thức bị quá tải. Vui lòng tham khảo ảnh chụp màn hình dưới đây để biết ví dụ nhanh.
Đó là tất cả về autoboxing và unboxing trong java. Tính năng này rất hữu ích trong việc giảm kích thước mã vì chúng ta không phải chuyển đổi kiểu nguyên thủy sang đối tượng một cách rõ ràng.
Happy learning!!!