首页 > 解决方案 > 参数化类型的 Java 类型推断,例如 List

问题描述

今天早上编码时,我发现了一些对我来说很奇怪的东西,我想解释一下为什么 java 会这样。这是一个解释我在做什么的片段:

public class Test{

  static int method(List<CharSequence> a) {
    //nothing important here
  }

  public static void main(String[] args) {
    List<String> myList = Arrays.asList("abc", "def");
    //this won't compile since it expect a list of CharSequence
    method(myList);
  }

}

我本来希望这可以编译,因为字符串实现了 CharSequence。我知道我可以更改方法的签名以获得:

static int method(List<? extends CharSequence> a)

Java 中的一种方法可以强制我的 List 中的对象类型严格地是 CharSequence 吗?

感谢您的回答!

编辑:正如@sweeper 所说,这是 List<Dog> 是 List<Animal> 的子类的副本吗?为什么 Java 泛型不是隐式多态的? 感谢您的所有回答,这是我知道但完全忘记的事情。

标签: java

解决方案


推荐阅读