您有几种选择。
- 您可以使用反射
- 你可以用
instanceof
- 您可以使用访客模式
对于这些示例,我们将尝试查找此变量的类型:
Object obj = new TargetType();
我们想看看被引用的对象
obj是否为type
TargetType。
反射
您可以通过以下几种方法执行此操作:
if(obj == TargetType.class) { //do something}上面代码背后的思想是
getClass()返回对
Class用于实例化该对象的对象的引用。您可以比较参考。
if(TargetType.class.isInstance(obj)) { //do something}Class#isInstance检查传递给方法的对象值是否是我们正在调用的类的实例
isInstance。
false如果为
objnull,它将返回,因此不需要进行null检查。这需要强制转换以对对象执行操作。
实例
这很简单:
if(obj instanceof TargetType) { //do something}instanceof是语言规范的一部分。
false如果
obj为null,则返回。这需要强制转换以对对象执行操作。
访客模式
我已经在其他答案之一中对此进行了详细说明。您将负责处理
null。您应该更深入地研究该模式,以了解它是否适合您的情况,因为这可能是一个过大的选择。这不需要强制转换。



