选角集合<一些类>到集合<一些超级类>
我相信以前已经回答过这个问题,但我真的找不到它。
我有一个java类和一个抽象类。 延伸。SomeClass
SomeSuperClass
SomeClass
SomeSuperClass
另一个抽象方法具有返回 .在实现类中,我有一个Collection<SomeSuperClass>
Collection<SomeClass> myCollection
我知道我不能只是返回,因为不能继承。尽管如此,我知道里面的一切都是因为毕竟,它们是扩展的对象。myCollection
Collection<SomeClass>
Collection<SomeSuperClass>
myCollection
SomeSuperClass
SomeClass
SomeSuperClass
我怎样才能做到这一点?
即我想要
public class A
{
private Collection<SomeClass> myCollection;
public Collection<SomeSuperClass> getCollection()
{
return myCollection; //compile error!
}
}
我发现的唯一方法是通过非泛型类型进行转换,并获得未经检查的警告等等。但是,一定有更优雅的方式吗?我觉得也不需要使用和朋友,因为静态地确定返回的集合只包含对象(在向下转换而不是向上转换时不是这种情况,但这不是我正在做的)。我错过了什么?Collections.checkedSet()
SomeClass
谢谢!