1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java泛型程序设计——泛型类型的继承原则

java泛型程序设计——泛型类型的继承原则

时间:2018-10-30 06:02:08

相关推荐

java泛型程序设计——泛型类型的继承原则

【0】README

0.1)本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的泛型类型的继承原则的知识;

【1】泛型类型的继承原则相关

1.1)考虑一个类 Employee 和一个Employee子类 Manger , 问: Pair 是 Pair 的一个子类吗?答案是: “不是的”;

1.2)看个荔枝:(下面的代码将不能编译)

Manager[] m1 = ...;Pair<Employee> results = ArrayAlg.minmax(m1); // ERRORminmax 方法返回 Pair<Manager> ,而不是 Pair<Employee> ,并且这样的赋值是不合法的;

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; //OKr2.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》下图展示了它们的联系:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。