Java泛型一:泛型定义及规则
来源:互联网 发布:怎么在淘宝卖耐克正品 编辑:程序博客网 时间:2024/05/23 01:03
泛型定义
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。
泛型规则限制
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型;
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的;
3、泛型的类型参数可以有多个;
4、泛型的参数类型可以使用extends、super语句,例如。习惯上称为“有界类型“;
5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName("java.lang.String");
示例对比
有这样一个需求:定义矩形对象,使矩形对象的宽度、高度既可以支持整形又可以支持字符串类型(例子可能不太恰当~~)。在不使用泛型的情况下,我们可能会定义两个类,一个类支持整形参数,另一个类支持字符串类型参数,如下:
类一:
package com.ips.volatiles.demo1;public class RectangleInteger { private Integer width; private Integer height; public RectangleInteger(Integer width, Integer height){ this.width = width; this.height = height; } public Integer getWidth() { return width; } public void setWidth(Integer width) { this.width = width; } public Integer getHeight() { return height; } public void setHeight(Integer height) { this.height = height; } public void showDetails(){ System.out.println("the rectangle, width is " + this.width + " height is " + this.height); } public static void main(String [] args){ Integer width = 10; Integer height = 5; RectangleInteger rect = new RectangleInteger(width, height); width = rect.getWidth(); height = rect.getHeight(); rect.showDetails(); }}
类二:
package com.ips.volatiles.demo1;public class RectangleString { private String width; private String height; public RectangleString(String width, String height){ this.width = width; this.height = height; } public String getWidth() { return width; } public void setWidth(String width) { this.width = width; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } public void showDetails(){ System.out.println("the rectangle, width is " + this.width + " height is " + this.height); } public static void main(String [] args){ String width = "20"; String height = "40"; RectangleString rect = new RectangleString(width, height); width = rect.getWidth(); height = rect.getHeight(); rect.showDetails(); }}
类三(泛型方式定义):
package com.ips.volatiles.demo1;public class Rectangle<T> { private T width; private T height; public Rectangle(T width, T height){ this.width = width; this.height = height; } public T getWidth() { return width; } public void setWidth(T width) { this.width = width; } public T getHeight() { return height; } public void setHeight(T height) { this.height = height; } public void showDetails(){ System.out.println("the rectangle, width is " + this.width + " height is " + this.height); } public static void main(String [] args){ Integer width = 10; Integer height = 5; Rectangle<Integer> rect = new Rectangle<Integer>(width, height); width = rect.getWidth(); height = rect.getHeight(); rect.showDetails(); String widthStr = "20"; String heightStr = "40"; Rectangle<String> rect1 = new Rectangle<String>(widthStr, heightStr); widthStr = rect1.getWidth(); heightStr = rect1.getHeight(); rect1.showDetails(); }}
作用
再次强调一下泛型的作用:泛型的好处是在编译的时候进行类型安全检查,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。
1 0
- Java泛型一:泛型定义及规则
- Java标识符定义规则
- css的定义及运行规则
- java study 09day--静态内部类及内部类定义规则
- Java泛型方法定义及泛型类型推断
- Java中接口中的方法定义规则
- java标识符定义及其规则规范
- java基础_day0001_变量定义规则
- java中方法的定义与规则
- java 基础语法及规则
- java定义泛型
- 【数据挖掘】关联规则的术语及定义
- java时间定义及转换
- java数组定义及使用
- java数组定义及使用
- java数组定义及使用
- java异常处理及定义
- JAVA 方法定义及调用
- 【Apache Thrift】Thrift的使用和编译(二)
- IOS 正则验证
- Linux-fork()
- shell截取字符串的方法
- NSDate浅谈 当前时间,零点,过去一分钟,时间的比较
- Java泛型一:泛型定义及规则
- Servlet获取URL地址
- Tkinter教程之Font篇
- toString()和(String)的区别
- 一天一条Linux指令-file
- Linux-fork()
- List 、Set 和Map的简单讲解
- 【正则表达式】匹配中文字符 整理
- 单纯只是为了方便查看而已 --CSS篇