Java中的instanceof与可变对象

32
我需要一种方法,可以传递一个参数,我假设它是一个类(不确定),在该方法中,将使用instanceof检查x是否是所传递的类的实例。
应该怎么做?我尝试了一些方法,但都没有成功。
2个回答

66
这样怎么样:
public boolean checker(Object obj) {
    return obj instanceof SomeClass;
}

或者如果SomeClass需要作为参数:

public boolean checker(Object obj, Class someClass) {
    return someClass.isInstance(obj);
}

或者如果你想要的实例是 someClass,而不是 someClass 的子类实例:

public boolean checker(Object obj, Class someClass) {
    return someClass.equals(obj.getClass());
}

为了完整性,必须检查objsomeclass是否为null - user1406062
1
@HussainAl-Mutawa - 我不同意。如果没有规格说明,当方法被使用错误的参数(例如null)调用时,正确的行为应该是允许NullPointerException异常发生。 - Stephen C
1
请注意第二种和第三种变体之间的区别:当obj的类型严格为someclass时,第三种返回true,而第二种在obj.getClass()扩展或实现someclass时也返回true。 - Alexei Kaigorodov
@AlexeiKaigorodov - 是的...那就是我说的。 - Stephen C

16

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接