这一周我们学习了第八章——泛型程序设计,在本章里面,我们了解到了:
为什么要使用泛型程序设计?是因为JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进,使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。
泛型概念:泛型也被称为参数化类型,就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型,(如ArrayList类) 。泛型程序设计意味着编写代码可以被很多不同类型的对象所重用。
对于泛型类:一个泛型类就是具有一个或多个类型变量的类,即创建用类型作为参数的类。如一个Pair泛型类定义格式如下:public class Pair<T>{ }(Pair类引入了一个类型变量T,用尖括号(<>)括起来,并放在类名的后面)。 泛型类可以有多个类型变量。例如: public class Pair<T, U> { … } 。类定义中的类型变量用于指定方法的返回类型以及域、局部变量的类型。
对于泛型方法:除了泛型类外,还可以只单独定义一个方法作为泛型方法,用于指定方法参数或者返回值为泛型类型,留待方法调用时确定。 泛型方法可以声明在泛型类中,也可以声明在普通类中。
class ArrayAlg
{
public static <T> getMiddle(T...a) // <T> —>泛化处理,类型被参数化的一个标记
{
return a[a.Length/2];
}
}
对于类型变量 的限定:共有 两类,一类是泛型变量的上界,另一类是泛型变量的下界。关键字extends所声明的是上界,super声明的是下界。如public class NumberGeneric< T extends Number>,其中,T是Number的子类,T继承父类Number,然后extends关键字所声明的上界既可以是一个类,也可以是一个接口,还有一个类型变量或通配符可以有多个限定,限定类型用“&”分割,例如: < T extends Comparable & Serializable >;再如List<? super CashCard> cards = new ArrayList<T>(),其中,“?”符号表明参数的类型可以是任何一种类型,它和参数T的含义是有区别的。T表示一种未知类型,而“?”表示任何一种类型,所以就有“?”表示的类型是CashCard的父类。
对于通配符和泛型类型的继承规则:除了上面所说外,“?”通配符一般有以下三种用法:(1) 单独的?,用于表示任何类型。(2) ? extends type,表示带有上界。(3) ? super type,表示带有下界。Java中的数组是协变的,但这一原理不适用于泛型类型。
所学的就这些。这周的问题是,对于老师布置的任务五——计算器的四则运算,我不能够 利用泛型程序设计技术来完成,所以希望老师可以讲解一下。