class A{}
A a = new A();
Class a1 = A.class;
System.out.println(a instanceof A); //true
System.out.println(a1.isInstance(a)); //true
System.out.println(a instanceof a1); //compile error
Class.isInstance
是Java语言instanceof运算符的动态等价物。所以我认为“A”是“类”对象,但为什么编译错误?而“instanceof”对象的对象是什么类型?
答案 0 :(得分:0)
因为使用instanceof
,您应该提供类名,而不是表示有关此类的信息的对象(即不是类Class
的对象)。 isInstance
使用calss的Class
- 对象,instanceof
- 名称。
System.out.println(a instanceof A); //<object> instanceof <class name>
System.out.println(a1.isInstance(a)); //<Class object>.isInstance(<object>)
System.out.println(a instanceof a1); //error: <object> instanceof <Class object>
System.out.println(A.isInstance(a)); //error: <class name>.isInstance(<object>)
答案 1 :(得分:0)
对其类型进行分类,而不是实例。
System.out.println(a instanceOf a1); //compile error
此行类似“此对象TYPE是OBJECT的类型” 这没有意义。 a是TYPE“CLASS”的对象 a1是TYPE“A”的对象
答案 2 :(得分:0)
请参阅规范中的instanceof
。
System.out.println(a instanceOf A); //true
不,那是一个语法错误。 instanceof
没有资本O
。但是a instanceof A
是true
,是的。
System.out.println(a instanceOf a1); //compile error
同样,instanceof
有一个小写o
。但是,这是一个编译错误,因为您正在a
对A.class
而不是A
进行检查。
instanceof
右侧的操作数必须是引用类型的名称,而不是Class
类的实例。 A
是引用类型的名称。 A.class
是Class
类的实例。