为什么我不能这样做?
(涉及IT技术,需要根据上下文进一步翻译)public abstract class A {}
public class B extends A {}
...
public ArrayList<A> foo()
{
return new ArrayList<B>();
}
由于有很多人喜欢指出愚蠢的错误,我改成公开的了。
为什么我必须写这么多代码才能满足Java的无意义要求呢?
public List<A> foo()
{
List<A> aList = new ArrayList<A>();
List<B> bList = new ArrayList<B>();
/* fill bList*/
for (B b : bList)
{
aList.add(b);
}
return aList;
}
ArrayList<A>
吗?如果不是,可以使用通配符。如果是,请更改该方法的主体... - Jon SkeetArrayList<B>
视为ArrayList<A>
- 这样做不安全。 - Jon SkeetArrayList<B>
视为ArrayList<A>
,仅仅因为B
扩展了A
,会出现什么问题。 - Jon Skeet