我有NodeType
s和Node
s的概念。 A NodeType
是一组元数据,您可以从中创建Node
实例(很像整个类/对象关系)。通用方法类型安全
我有各种NodeType
实现和各种节点实现。
在我AbstractNodeType(用于NodeTypes顶层)我有b抽象createInstance()
方法会,一旦由子类实现时,创建正确的节点实例:
public abstract class AbstractNodeType {
// ..
public abstract <T extends AbstractNode> T createInstance();
}
在我NodeType
实现我实现类似方法这样的:
public class ThingType {
// ..
public Thing createInstance() {
return new Thing(/* .. */);
}
}
// FYI
public class Thing extends AbstractNode { /* .. */ }
这是一切都很好,但public Thing createInstance()
产生围绕类型安全的警告。具体做法是:
类型安全:从类型 ThingType需要选中转换 从类型符合与T AbstractNodeType
我在做什么错 的createInstance()的返回类型的事引起这样的警告?
我该如何重新考虑我的代码来解决这个问题?
@SuppressWarnings("unchecked")
不好,我想通过正确编码来解决这个问题,而不是忽略问题!
哇靠这很酷。你说得对,它确实没有收到它解雇的酒吧! – SCdF 2008-09-17 10:23:34