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>();
}
}
- 总结:泛型没有多态,多态是指 父类变量 = 子类对象,而泛型只是一个标签;