第三部分java应用程序设计泛型入门.pptxVIP

  • 2
  • 0
  • 约2.58千字
  • 约 13页
  • 2021-12-07 发布于北京
  • 举报
JAVA 应用开发详解 第10章:泛型—— 泛型入门 MLDN 软件教学研发部 本章目标 掌握泛型的产生意义 掌握泛型的基本使用 了解泛型的警告信息及泛型的擦除 为什么要有泛型? 现在有以下的实例要求: 现在要求设计一个可以表示出坐标点的类,坐标由X和Y组成,坐标的表示方法有以下三种。 整数表示:x = 10、y = 20 小数表示:x = 10.5、y = 20.6 字符串表示:x = 东经180度、y = 北纬210度 问:此类该如何设计? 题目分析 一看到这样的要求,读者首先就要考虑到,必须建立好一个表示坐标点的类 —— Point,此类中有两个属性分别用来表示x坐标和y坐标,但是x和y中所保存的数据类型会有三种(int、float、String),而要想使用一个类型可以同时接收这样的三种类型数据,则现在只能使用Object,因为Object类可以接收任何类型的数据,都会自动发生向上转型操作,这样三种数据类型将按以下的方式进行转换: 数字(int)  自动装箱成Integer  向上转型使用Object接收 小数(float)  自动装箱成Float  向上转型使用Object接收 字符串(String)  向上转型使用Object接收 设计Point类 class Point { private Object x; // 表示x坐标 private Object y; // 表示y坐标 public void setX(Object x) { this.x = x; } public void setY(Object y) { this.y = y; } public Object getX() { return this.x; } public Object getY() { return this.y; } }; 代码的问题 public class GenericsDemo04 { public static void main(String[] args) { Point p = new Point() ; p.setX(10) ; // 利用自动装箱操作:int -- Integer -- Object p.setY(北纬210度) ; // String -- Object int x = (Integer)p.getX() ; // 取出数据 int y = (Integer)p.getY() ; // 取出数据 此处出现了类转换错误 System.out.println(整数表示,X坐标为: + x) ; System.out.println(整数表示,Y坐标为: + y) ; } } 泛型 泛型可以解决数据类型的安全性问题,它主要的原理,是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这样在类声明或实例化的时候只要指定好需要的类型即可。 泛型类定义格式: [访问权限] class 类名称泛型类型1,泛型类型2,…泛型类型3{ [访问权限] 泛型类型标识 变量名称 ; [访问权限] 泛型类型标识 方法名称(){} ; [访问权限] 返回值类型声明 方法名称(泛型类型标识 变量名称){} ;} 泛型对象定义 类名称具体类 对象名称 = new 类名称具体类() ; 声明泛型 class PointT { // 此处可以是任意的标识符号,T是type的简称 private T var; // 此变量的类型由外部决定 public T getVar() { // 返回值的类型由外部指定 return var; } public void setVar(T var) {// 设置的类型由外部指定 this.var = var; } }; public class GenericsDemo05 { public static void main(String[] args) { PointInteger p = new PointInteger() ; // 里面的var类型为Integer类型 p.setVar(30) ; // 设置数字,自动装箱 System.out.println(p.getVar() * 2); // 计算结果,按数字取出 } } 设置泛型的要求 在泛型的指定中,是无法指定基本数据类型的,必须设置成一个类,这样在设置一个数字的时候就必须使用包装类,而在JDK 1.5之后提供了自动装箱的操作,操作时也不会太复杂。 泛型应用中的构造方法 构造方法可以为类中的属性初始化,那么如果类中的属

文档评论(0)

1亿VIP精品文档

相关文档