【发布时间】:2008-09-17 10:14:32
【问题描述】:
我有NodeTypes 和Nodes 的概念。 NodeType 是一堆元数据,您可以从中创建 Node 实例(很像整个类/对象关系)。
我有各种 NodeType 实现和各种 Node 实现。
在我的 AbstractNodeType(NodeTypes 的顶层)中,我有一个抽象的 createInstance() 方法,一旦由子类实现,它就会创建正确的 Node 实例:
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() 创建了一个关于类型安全的警告。具体来说:
类型安全:返回类型 Thing createInstance() 从类型 ThingType 需要未经检查的转换 从类型符合 T 抽象节点类型
我做错了什么导致这样的警告?
如何重构我的代码来解决这个问题?
@SuppressWarnings("unchecked") 不好,我希望通过正确编码来解决这个问题,而不是忽略问题!
【问题讨论】: