У меня есть концепция NodeType
s и Node
s. A NodeType
- это куча метаданных, которые вы можете создать из Node
экземпляров (много похожее на все отношения класса/объекта).Общий тип Тип Безопасность
У меня есть различные NodeType
реализации и различные реализации узлов.
В моей 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 от типа AbstractNodeType
Что я делаю неправильно вызвать такое предупреждение?
Как я могу переустановить мой код, чтобы исправить это?
@SuppressWarnings("unchecked")
нехорошо, я хочу исправить это, закодировав его правильно, не игнорируя проблему!
Святое дерьмо, что это круто. Вы правы, он действительно не получает паб, который держится! – SCdF 2008-09-17 10:23:34