我有一种方法可以分析 String
并确定正确的 Class<T>
哪里 T extends BaseClass
.
假设 BaseClass
扩展为 Child1
, Child2
及 Child3
.
在我的方法中,我想做如下事情:
public <T extends BaseClass> Class<T> from(String number) {
if (number.contains("Child1")) {
return Child1.class;
} else if (number.contains("Child2")) {
return Child2.class;
} else if (number.contains("Child3")) {
return Child3.class;
}
throw new UnsupportedOperationException("Cannot recognize class from " + number);
}
问题是上述方法根本无法编译 return
声明,因为 Required type is Class<T>, provided is Class<Child1>
(同上) Child2
及 Child3
当然)。
因此,我被迫(未经检查)投下:
return (Class<T>) Child1.class;
... 这当然很好,因为 Child1.class
兼容 Class<T>
.
我怎样才能以一种更干净的方式去做我想做的事情(没有警告)?
暂无答案!
目前还没有任何答案,快来回答吧!