我想创建一个GenericBuilder,可以用来检索我的类中定义的Builder类。我创建了以下接口和类Java泛型使用反射从方法(创建对象)获取Type
public interface BuilderType {
}
public class MyObject implements BuilderType {
private int i;
private MyObject() {}
public int getI() {
return i;
}
public static MyObjectBuilder buildMyObject() {
MyObjectBuilder builder = new MyObjectBuilder();
return builder;
}
public static class MyObjectBuilder {
private final MyObject obj;
MyObjectBuilder() {
obj = new MyObject();
}
public MyObjectBuilder withI(int i) {
obj.i = i;
return this;
}
public MyObject build() {
return obj;
}
}
public class GenericBuilder {
public static , S> S getBuilder(Class t) {
S s = null;
try {
s = (S) t.getDeclaredMethod("build" + t.getSimpleName(), null)
.invoke(null, null);
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
}
声明S =(S)t.get ......我GenericBuilder给出了一个警告投:未选中的对象转换到S,有没有消灭它的方法吗? ?
2012-11-30
JKV
+0
通常我们会'如果instanceof SomeClass'用于未经检查的转换。只是这是警告不能跳过它? –
+0
是的,我实际上可以跳过它,但只是想知道是否有办法克服它,并且我认为instanceof不能用于通用环境 –
+0
是的你是正确的。 –