我记得在一些Java书中读到除了'instanceof'之外的任何运算符,用于比较两个对象之间的类型层次结构.
instanceof是最常用和最常见的.我无法清楚地记得是否确实存在另一种做法.
你也可以,主要用于反思Class.isInstance
.
Class> stringClass = Class.forName("java.lang.String"); assert stringClass.isInstance("Some string");
显然,如果在编译时知道类的类型,那么instanceof
仍然是最好的选择.
就在这里.不是运算符而是Class类的方法.
这是: isIntance(对象o)
从文档引用:
...此方法是Java语言instanceof运算符的动态等价物
public class Some { public static void main( String [] args ) { if ( Some.class.isInstance( new SubClass() ) ) { System.out.println( "ieap" ); } else { System.out.println( "noup" ); } } } class SubClass extends Some{}