域名 不做网站,商场设计案例分析,优化seo方法,惠州seo顾问【0】README
0.1#xff09; 本文描述源代码均 转自 core java volume 1#xff0c; 旨在理解 java泛型程序设计 的 泛型类型的继承原则 的知识#xff1b; 【1】泛型类型的继承原则相关
1.1#xff09;考虑一个类 Employee 和一个Employee子类 Manger #xff0c; 问 本文描述源代码均 转自 core java volume 1 旨在理解 java泛型程序设计 的 泛型类型的继承原则 的知识 【1】泛型类型的继承原则相关
1.1考虑一个类 Employee 和一个Employee子类 Manger 问 Pair 是 Pair 的一个子类吗答案是 “不是的” 1.2看个荔枝下面的代码将不能编译
Manager[] m1 ...;
PairEmployee results ArrayAlg.minmax(m1); // ERROR
minmax 方法返回 PairManager 而不是 PairEmployee ,并且这样的赋值是不合法的 Annotation
A1可以将一个 Manger[] 数组赋给一个 Employee[] 的 数组
Manager[] m1 {ceo , cfo};
Employee[] e1 m1; //OK
然而 数组带有特别的保护 如果试图将一个 低级别的雇员存储到 e1[0], 那么虚拟机会 抛出 ArrayStoreException 异常A2永远可以将参数化类型转换为一个原始类型 如 Pair《Employee》 是原始类型 Pair 的一个子类型
Pair Manger m1 new Pair(ceo, cfo);
Pair m2 m1; //OK
r2.setFirst(new File(...)) // only a compile-time warning
当使用 getFirst 获得外来对象并赋给 Manager变量时 与通常一样 会抛出 ClassCastExcetpion 异常。A3最后泛型类可以扩展或 实现 其他的泛型类 如 ArrayList《T》 类实现 List《T》 接口。 这意味着 一个 ArrayList《Manager》 可以被转换为一个 List《Manager》。 但是 如前面所见 一个 ArrayList《Manager》 不是一个 ArrayList《Employee》或 List《Employee》下图展示了它们的联系