Câu trả lời:
Nếu bạn muốn biết liệu có Class
mở rộng cái khác hay không , hãy sử dụng Class # isAssignableFrom (Class) . Ví dụ của bạn, nó sẽ là:
if(B.class.isAssignableFrom(A.class)) { ... }
Nếu bạn quan tâm đến việc một thể hiện có thuộc loại cụ thể hay không, hãy sử dụng instanceof
:
A obj = new A();
if(obj instanceof B) { ... }
Lưu ý rằng những thứ này sẽ trả về true
nếu lớp / thể hiện là thành viên của hệ thống phân cấp kiểu và không bị hạn chế đối với các mối quan hệ siêu lớp / lớp con trực tiếp. Ví dụ:
// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true
Nếu bạn muốn kiểm tra các mối quan hệ siêu lớp / lớp con trực tiếp, Tim cũng đã cung cấp câu trả lời .
Bạn muốn biết nếu b
được gán từ a
:
b.isAssignableFrom(a);
Ngoài ra, nếu bạn muốn biết đó a
là lớp con trực tiếp của b
:
a.getSuperclass().equals(b);
a
và b
từ câu hỏi