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这,如果你愿意,你可以调用方法.
首先,"严格编程的观点"是什么意思?