不兼容的条件操作数类型String和s2 instanceof

use*_*289 1 java

这段代码

    String s1,s2;
    if(s1 instanceof s2) {

    }
Run Code Online (Sandbox Code Playgroud)

给我错误:不兼容的条件操作数类型String和s2.谁能告诉我我做错了什么?

ppe*_*rka 6

您需要在此运算符的右侧使用Class,而不是实例.

对于运行时检查对象是否是另一个对象类的实例,可以使用Class类中的工具:

if(s2.getClass().isAssignableFrom(s1.getClass))

...
Run Code Online (Sandbox Code Playgroud)

isAssignableFrom(Class cls)

确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口.

或者有isInstance(Object)类似情况的要求:

if(s2.getClass().isInstance(s1))
 ....
Run Code Online (Sandbox Code Playgroud)

isInstance(Object obj)

确定指定的Object是否与此Class表示的对象分配兼容.此方法是Java语言instanceof运算符的动态等效项.