- 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之后提供了自动装箱的操作,操作时也不会太复杂。
泛型应用中的构造方法
构造方法可以为类中的属性初始化,那么如果类中的属
您可能关注的文档
- 工程机械蓄电池工及日常使用注意事项.pdf
- 10112高等数学上期中试题.pptx
- 小学数学北师大版三年级下册试卷集170份期末考试.pdf
- 事业单位判断事件排序.pdf
- 华7月19日培训集新建10儿童齿科.pptx
- 中仿simpleware生物医疗建模与数值分析解决方案.pdf
- 海量经典权威hypermesh100中文教程1extension and retraction analysis of the main landing gear an aircraft mv.pdf
- 配套版第八章第十三章第十章.pdf
- 数控铣中级操作工理论知识试题库数控新.pdf
- 2019年学科专业知识模拟试卷解析四中学数学.pdf
最近下载
- 2025-2026二手房行业研究报告.doc VIP
- 2026龙飞平面图形推理基础理论➕百大图形3.0版本.pdf VIP
- 2026马年幸运大抽奖PPT模板.pptx VIP
- 智研咨询—中国无人靶机行业市场全景调查、投资策略研究报告.docx VIP
- 第1-13届北方数学奥林匹克数学试题及解答.pdf VIP
- 门诊统筹基金分析报告.pptx VIP
- 电光KBZ16-400 1140(660) (WZBK-6D)矿用隔爆型型真空馈电开关说明书.pdf VIP
- 聚酯切粒机培训课件.pptx VIP
- 园林植物病虫害防治课件共104张PPT).pptx VIP
- DB44/26-2001水污染物排放限值.pdf VIP
原创力文档

文档评论(0)