thể trùng lặp:
Java: Long result = -1: cannot convert from int to longTại sao Java không hỗ trợ cưỡng chế và autoboxing?
Ví dụ Integer foo = 4
và Long foo = 4L
cả biên dịch, nhưng Long foo = 4
không. Có lý do nào cho việc này không?
thể trùng lặp:
Java: Long result = -1: cannot convert from int to longTại sao Java không hỗ trợ cưỡng chế và autoboxing?
Ví dụ Integer foo = 4
và Long foo = 4L
cả biên dịch, nhưng Long foo = 4
không. Có lý do nào cho việc này không?
Long foo = 4;
có nghĩa là: chỉ định int
giá trị 4 cho đối tượng lớp Long
. Nó sẽ cố gắng sử dụng autoboxing để làm như vậy và thất bại, bởi vì autoboxing chỉ áp dụng cho nguyên thủy thích hợp. Nó có thể được cố định bằng hai cách:
Long foo = (long) 4;
Long foo = 4L;
trong trường hợp đầu tiên bạn cast int
4-long
4. Trong phần thứ hai, bạn cung cấp một chặng đường dài.
Để trả lời câu hỏi: Java không hỗ trợ tự động truyền và là rất nghiêm ngặt khi nhập, đó có thể là lý do tại sao nó không tự động hỗ trợ.
Câu hỏi hay. Tôi tự hỏi nếu điều đó sẽ gây ra một số sự mơ hồ. (+1) – NPE
Về mặt kỹ thuật, 'Long foo = 4' không thể được đánh giá tại thời gian biên dịch. –
Bạn kết hợp chuyển đổi với hộp số tự động. – Bevor