泛型
漫步莱茵河畔
用心去工作
展开
-
《数据结构与算法》之泛型——使用Object表示泛型
面向对象的一个重要目标就是对代码的重用。而支持这个目标的一个重要的机制就是泛型机制(generic mechanism):如果除去对象的基本类型外,实现方法是相同的,那么就可以用泛型实现(genetic implementation)来描述这种基本的功能。使用Object表示泛型:Java中的基本思想就是可以通过使用像Object这样的超类来实现泛型类。示例如下:public cla...原创 2018-10-20 19:49:59 · 298 阅读 · 0 评论 -
《数据结构与算法》之泛型——基本类型的包装
对基本类型的包装阐述了包装类(wrapper class)的基本主题。一种典型的用法是存储一个基本的类型,并添加一些这种基本类型不支持或不能正确支持的操作。对于Java来说,虽然每一个引用类型都和Object相容,但是8种基本类型却不能。于是,Java为这8种基本类型中的每一种都提供了一个包装类。每一个包装对象都是不可改变的(就是说它的状态绝不能改变),它存储一种当该对象被构建时所设置的原值,...原创 2018-10-20 20:41:55 · 108 阅读 · 0 评论 -
《数据结构与算法》之泛型——使用接口类型表示泛型
如:考虑再由一些项组成的数组中找出最大项的问题。基本的代码是类型无关的,但是它需要一种能力来比较任意两个对象。因此,不能直接找出Object的数组中的最大元素——我们需要更多的信息。最简单的方法就是找出Comparable的数组中的最大元。要确定顺序,可以使用compareTo方法,它对所有的Comparable都必然是现成可用的。1、只有实现Comparable接口的那些对象才能够作为Com...原创 2018-10-21 18:59:51 · 415 阅读 · 0 评论 -
《数据结构与算法》之泛型——数组类型的兼容性
如Employee和Student都继承自Person,考虑下面两条赋值语句:Person arr=new Employee[5]; //Employee和Person是兼容的arr[0]=new Student(……); //Student和Person也是兼容的两句都编译,而arr[0]实际上是引用一个Employee,可是Student和Employee是不兼容的,这...原创 2018-10-21 19:29:04 · 407 阅读 · 0 评论 -
《数据结构与算法》之泛型——简单的泛型类和接口
当指定一个泛型类时,类的声明则包含一个或多个类型参数,这些参数被放在类名后面的一对尖括号内。例:public class Cell<AnyType> { private AnyType value; public AnyType read(){ return value; } public void write(AnyType x){ value=x;...原创 2018-10-21 20:08:31 · 216 阅读 · 0 评论 -
《数据结构与算法》之泛型——自动装箱/拆箱
如果一个int型变量被传递到需要一个Integer对象的地方,那么编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱。而如果一个Integer对象被放到需要int类型的地方,则编译器将在幕后插入一个对intValue方法的调用,这就叫做自动拆箱。对于其它7对基本类型/包装类型,也是如此。例:public class BoxingDemo { public stat...原创 2018-10-21 20:39:29 · 190 阅读 · 0 评论 -
《数据结构与算法》之泛型——带有限制的通配符
数组的协变性导致代码得以编译,但此后会产生一个运行时异常(ArrayStoreException)。因为使用泛型的全部原因就在于产生编译器错误而不是类型不匹配的运行时异常,所以泛型集合不是协变的。泛型(以及泛型集合)不是协变的(但有意义),而数组是协变的。若无附加的语法,则用户就会避免使用集合(colleection),因为失去协变性使得代码缺少灵活性,而通配符可以弥补这个不足。通配符用来...原创 2018-10-21 21:10:17 · 138 阅读 · 0 评论