这是一个使用 Javassist 动态生成类的代码。
public class ClassGenerator {
// ...
public Class<? extends Base> generateClass(MetaData md) {
// Call javassist api and returns a generated on the fly class...
}
}
在后面的代码中,有
public class GeneratorClient implements IClient<Base> {
private Class<Base> clazz;
public void init() {
MetaData myMd = ...;
clazz = generator.generateClass(myMd);
// ...
}
public Base getClazz() {
return clazz;
}
}
public interface IClient<T extends Base> {
T getClazz();
}
显然,编译器会在此处引发错误。投射会引发警告(“Uncheked cast ...”) ......
抑制警告不是一种选择。
我也写不出来:public class GeneratorClient implements IClient<? extends Base>
。
如何更改的返回类型ClassGenerator#generateClass
?
JDK 6