나는 NodeType
및 Node
의 개념을 가지고 있습니다. NodeType
은 Node
인스턴스를 생성 할 수있는 많은 메타 데이터입니다 (전체 클래스/개체 관계와 매우 유사 함).일반 메서드 유형 안전
저는 다양한 NodeType
구현과 다양한 노드 구현을 가지고 있습니다. 내가 좋아하는 방법을 구현하는 내 NodeType
구현에
public abstract class AbstractNodeType {
// ..
public abstract <T extends AbstractNode> T createInstance();
}
: 내 AbstractNodeType에서
(NodeTypes에 대한 최상위 레벨) 내가 한 번 서브 클래스에 의해 구현됩니다 AB 추상적createInstance()
방법이 올바른 노드의 인스턴스를 생성 이 :
public class ThingType {
// ..
public Thing createInstance() {
return new Thing(/* .. */);
}
}
// FYI
public class Thing extends AbstractNode { /* .. */ }
이 모두 잘 좋지만, public Thing createInstance()
유형의 안전에 대한 경고를 생성합니다. 특히 :
유형 안전 : 내가 잘못 뭘 AbstractNodeType에게 유형에서 T에
을 준수하도록 선택하지 않은 변환 을 필요로 ThingType 유형 에서 으로 createInstance()의 반환 형식의 것 그런 경고를하기 위해서?
어떻게 수정하면됩니까?
@SuppressWarnings("unchecked")
이 좋지 않습니다. 문제를 무시하지 않고 올바르게 코딩하여 문제를 해결하고 싶습니다.
이런 쓰레기를. 당신 말이 맞아요, 정말 그 술집을 먹지 않습니다! – SCdF
그래, 그 바보 같은 SCJP 책에서 나온 유일한 가치있는 일이야. –