相关疑难解决方法(0)

List <Dog>是List <Animal>的子类吗?为什么Java泛型不是隐式多态的?

我对Java泛型如何处理继承/多态性感到困惑.

假设以下层次结构 -

动物(父母)

狗 - 猫(儿童)

所以假设我有一个方法doSomething(List<Animal> animals).根据所有继承和多态的规则,我会假设a List<Dog> 是 a List<Animal>而a List<Cat> 是 a List<Animal>- 所以任何一个都可以传递给这个方法.不是这样.如果我想实现这种行为,我必须明确告诉该方法接受一个Animal的任何子类的列表doSomething(List<? extends Animal> animals).

我知道这是Java的行为.我的问题是为什么?为什么多态通常是隐含的,但是当涉及泛型时必须指定它?

java generics polymorphism inheritance

727
推荐指数
10
解决办法
10万
查看次数

如何将List <Object>转换为List <MyClass>

这不编译,任何建议表示赞赏.

 ...
  List<Object> list = getList();
  return (List<Customer>) list;
Run Code Online (Sandbox Code Playgroud)

编译器说:不能投List<Object>给List<Customer>

java generics casting

88
推荐指数
7
解决办法
17万
查看次数

什么是未经检查的演员表,如何查看?

我想我得到了什么未经检查的演员意味着(从一个到另一个不同类型的演员),但是"检查"演员是什么意思?如何检查演员表以便我可以在Eclipse中避免此警告?

java eclipse casting unchecked

31
推荐指数
2
解决办法
3万
查看次数