cuốn sách gpt4 ai đã làm

java — Tại sao "t instanceof T" không được phép khi T là tham số loại và t là biến?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 04:46:08 29 4
mua khóa gpt4 Nike

Eclipse nói rằng thao tác instanceof không được phép trên các tham số kiểu do bộ xóa kiểu chung.

Tôi đồng ý rằng sẽ không có thông tin loại nào được giữ lại trong thời gian chạy. Nhưng hãy xem xét khai báo chung sau đây của một lớp:

lớp SomeClass{
Tt;
SomeClass(Object o){
System.out.println(o instanceof T); // Bất hợp pháp
}
}

Khi chạy, T sẽ không xuất hiện! Nhưng nếu tôi khởi tạo lớp kiểu Số nguyên này thì đối tượng tương ứng sẽ có trường kiểu Số nguyên t.

Vậy tại sao tôi không thể kiểm tra loại biến bằng T có thể được thay thế bằng Integer khi chạy. Tôi thực sự sẽ làm điều gì đó như "o instanceof Integer".

Trong trường hợp nào việc cho phép instanceof với các tham số loại gây ra rắc rối đến mức bị cấm?

câu trả lời hay nhất

Nhưng nếu tôi khởi tạo lớp kiểu Integer này thì đối tượng tương ứng sẽ có trường t kiểu Integer

Không, nó sẽ không. Nó sẽ có một trường kiểu đối tượng. Chỉ là mỗi khi bạn truy cập nó sẽ được chuyển đổi thành số nguyên.

Hãy xem xét đoạn mã sau:

SomeClass c = new SomeClass();
SomeClass untyped = (SomeClass)c; // Đó là loại nào?
SomeClass stringTyped = (SomeClass)untyped; // Bây giờ là STRING??

có hiệu quả. Cung cấp cho bạn một loạt cảnh báo về trình biên dịch nhưng vẫn hoạt động. Bởi vì trường T thực sự thuộc loại Object và có thể được chuyển đổi thành bất kỳ loại nào.

Giới thiệu về java - Tại sao "t instanceof T" không được phép khi T là tham số kiểu và t là biến? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/8741984/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress