Tôi muốn biết về hành vi sau của toán tử instanceof
trong Java.Toán tử 'instanceof' hoạt động khác nhau đối với giao diện và lớp học
interface C {}
class B {}
public class A {
public static void main(String args[]) {
B obj = new B();
System.out.println(obj instanceof A); //Gives compiler error
System.out.println(obj instanceof C); //Gives false as output
}
}
Tại sao lại như vậy? Không có mối quan hệ giữa interface C
và class B
, nhưng nó cho sai trong khi trong trường hợp obj instanceof A
nó cho lỗi trình biên dịch?
Lưu ý: nếu bạn thay đổi nó thành 'Object obj = new B()', nó biên dịch. – immibis
Lỗi trình biên dịch cho bạn biết điều gì? – karfau
Nếu 'lớp B' là' final' thì 'obj instanceof C' sẽ không biên dịch, bởi vì nếu' B' không có kiểu con, thì nó được đảm bảo không liên quan đến 'C'. – jaco0646