除了instanceof运算符之外还有什么方法可以在java中进行对象类型比较吗?

Tus*_*shu 5 java

我记得在一些Java书中读到除了'instanceof'之外的任何运算符,用于比较两个对象之间的类型层次结构.

instanceof是最常用和最常见的.我无法清楚地记得是否确实存在另一种做法.

Chr*_*ung 6

你也可以,主要用于反思Class.isInstance.

Class<?> stringClass = Class.forName("java.lang.String");
assert stringClass.isInstance("Some string");
Run Code Online (Sandbox Code Playgroud)

显然,如果在编译时知道类的类型,那么instanceof仍然是最好的选择.


Osc*_*Ryz 6

就在这里.不是运算符而是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{}
Run Code Online (Sandbox Code Playgroud)