带有类名的Java instanceof

GMs*_*soF 11 java class instanceof

我很好奇地问这个,也许这是毫无意义的.

当我们在java中使用instanceof时,如:

if (a instanceof Parent){ //"Parent" here is a parent class of "a"
}
Run Code Online (Sandbox Code Playgroud)

为什么我们不能使用如下:

if (a instanceof Parent.class){
}
Run Code Online (Sandbox Code Playgroud)

从严格编程的角度来看,第二个'instanceof'是否更有意义?"Parent"和"Parent.class"有什么区别?

Jon*_*eet 16

"Parent"和"Parent.class"有什么区别?

后者是一个类文字 - 一种访问类型对象的方法Class<Parent>.

前者只是一个类的名称,它在各种情况下使用 - 调用静态方法,构造函数,强制转换等.

从严格编程的角度来看,第二个'instanceof'是否更有意义?

不是因为定义了语言 - instanceof 只能使用类型的名称,而不是表达式.如果你能写

if (a instanceof Parent.class)
Run Code Online (Sandbox Code Playgroud)

然后我希望你能写:

Class<?> clazz = Parent.class;
if (a instanceof clazz)
Run Code Online (Sandbox Code Playgroud)

......这不是它的工作方式.在另一方面,Class.isInstance这,如果你愿意,你可以调用方法.

首先,"严格编程的观点"是什么意思?