Java instanceOf Class 未按预期进行比较

Java instanceOf Class not comparing as expected

我有以下代码,

public <T> T build(Object source, Class<T> destClass) {
        if((Object)destClass instanceof TestDTO){
            return (T) testBuilder.build((BlahDTO) source);
        }
        if((Object)destClass instanceof BestDTO) {
            return (T) bestBuilder.build((BlahDTO) source);
        }
        return null;
    }

我正在尝试比较 destClass 是 TestDTO 还是 BestDTO 类型并采取适当的操作。但是即使 destClass 是指定的类型,比较也会失败。我是否遗漏了什么,还有我的替代方法,

public <T> T build(Object source, Class<T> destClass) {
        if(destClass.getSimpleName().equals(TestDTO.class.getSimpleName())){
            return (T) testBuilder.build((BlahDTO) source);
        }
        if(destClass.getSimpleName().equals(BestDTO.class.getSimpleName())) {
            return (T) bestBuilder.build((BlahDTO) source);
        }
        return null;
    }

虽然这种方法有效,但我觉得这段代码有点冒险。如果有人指出我做错了什么,或者建议一种替代方法,那将会很有帮助。提前致谢!

instanceof 检查左侧操作数是否是 右侧操作数的 实例。但是您的左侧操作数是一个 Class 对象,而不是 class 的一个实例。要使用 instanceof,您必须具有 class 的 实例 (通过 new TheClass 创建的东西)。

改为, if you really mean to be working with Class instances, you may want isAssignableFrom

if (TestDTO.class.isAssignableFrom(destClass))

旁注:(Object) 投射到 if((Object)destClass instanceof TestDTO) 没有任何意义。 instanceof 检查 对象 ,而不是你对它的那种引用;铸造与该检查无关。