Java 泛型是多态的表现形式吗?


1. 问题

  • 泛型是多态的表现形式吗?

2. 解答

  • 不是,泛型不认多态,定义什么泛型就必须要输入什么类;
  • 多态是描述类与类的关系的,一定是有对象的,而泛型没有创建对象,只是限制能传入什么数据类型的对象;
  • 下例中,是 List 的多态而不是泛型的多态:
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<String> ll = new ArrayList<String>;
    }
}
  • 容易混淆的是泛型参数的向上限定:<? extends 类 > 能接收该类型及其子类,但因为父类在多态里,没涉及到对象,所以不是多态,例如:
import java.util.ArrayList;

class People {

}

class Man extends People {

}

public class Test {
    public static void main(String[] args) {
        ArrayList<? extends People> l = new ArrayList<Man>();
    }
}
  • 总结:泛型没有多态,多态是指 父类变量 = 子类对象,而泛型只是一个标签;
发布了189 篇原创文章 · 获赞 189 · 访问量 5982

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104736616