【发布时间】:2018-04-03 17:39:18
【问题描述】:
我有以下代码,
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;
}
虽然这种方法有效,但我觉得这段代码有点冒险。如果有人指出我做错了什么,或者提出另一种方法,那将会很有帮助。提前致谢!
【问题讨论】:
-
请注意,一个类不是一个类的实例,并且将一个类转换为
Objectnot 也不会使其成为一个实例。请改用Class.isAssignableFrom()。
标签: java generics factory-pattern