Дженерики Java, возвращают универсальное расширение

Почему мне не разрешено это делать?

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;
}
5
задан Gabriel 11 January 2011 в 13:20
поделиться