java泛型的英文_Java泛型一:泛型的定义及规则
泛型定义
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。
泛型规则限制
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型;
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的;
3、泛型的类型参数可以有多个;
4、泛型的参数类型可以使用extends、super语句,例如。习惯上称为“有界类型“;
5、泛型的参数类型还可以是通配符类型。例如Class> classType = Class.forName("java.lang.String");
示例对比
有这样一个需求:定义矩形对象,使矩形对象的宽度、高度既可以支持整形又可以支持字符串类型(例子可能不太恰当~~)。在不使用泛型的情况下,我们可能会定义两个类,一个类支持整形参数,另一个类支持字符串类型参数,如下:
RectangleInteger
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);
}
}
RectangleString
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);
}
}
Rectangle
public class Rectangle {
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);
}
}
作用
再次强调一下泛型的作用:泛型的好处是在编译的时候进行类型安全检查,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。
java泛型的英文_Java泛型一:泛型的定义及规则相关推荐
- java软件工程师 英文_java开发工程师英文求职信
java开发工程师英文求职信 Dear manager: Hello! My name is XXXXX, is a computer software professional graduates. ...
- java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型
Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...
- java 泛型和集合_Java集合和泛型
集合 常用的集合有ArrayList,TreeSet,HashMap,HashSet. ArrayList 最常用的集合,每次插入都在后面追加元素. TreeSet 以有序状态保持并可防止重复.当你需 ...
- java无法实例化类型_java – 无法实例化泛型中的类型
我有这门课 public class Tree { //List of branches for this tree private List> branch = new ArrayList&g ...
- java 日期格式化 英文_Java中使用SimpleDateFormat输出英文日期(原创)
Java中使用SimpleDateFormat输出英文日期(原创) 由萱萱 发表于2013-12-14 如果你想输出英文日期,形如: September 29, 2013 可以借助java.text. ...
- JAVA匹配所有英文_java匹配汉字、英文、数字
使用的正则表达式 package Test_1; import java.util.Scanner; public class Test_7 { /** * @param args */ public ...
- java开发工程师英文_java工程师英文简历范文
java工程师英文简历范文 要仔细检查已成文的`个人简历,绝对不能出现错别字.语法和标点符号方面的低级错误.最好让文笔好的朋友帮你审查一遍,因为别人比你自己更容易检查出错误. java工程师英文简历范 ...
- java编程的英文_Java编程基础常见英语词汇总编
Java编程基础常见英语词汇总编 以下是百分网小编收集的Java编程基础常见英语词汇,希望对您的学习有所帮助! Java编程基础常见英语词汇 OO:object-oriented ,面向对象 OOP: ...
- java技术简介英文_Java技术常见的英文缩写
1. URL,Uniform Resource Location,统一资源定位符. 2. JDBC,Java DataBase Connectivity,Java数据库连接. 3. JSP,Java ...
- 关于java的参考文献英文_java英文参考文献
programming problems, what about the other 20 percent-the "really hard stuff?" The most po ...
最新文章
- 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
- 年薪50万,副职级别!注册安全工程师的前途如此光明?
- 详解synchronized锁的各种用法及注意事项
- C#复制数组的两种方式,以及效率比较
- 特质波动率python
- nginx alias正则表达式
- 面试常考:bitmap判断其中是否有相同元素
- 为什么不应该重写 service 方法?
- 安卓开发仿微信图片拖拽_使用Android 模仿微信朋友圈图片拖拽返回
- FILE 结构体的定义,inode ,软链接和硬链接的理解
- xml文件的创建和插入节点【原创】
- “凡事不发朋友圈的人,都是过的不好的人”你认同这句话吗为什么?
- 记一次Animator状态快速切换问题的解决
- Power Apps 拍照上传
- 【雅思大作文考官范文】——第九篇:‘CCTV essay’
- python面试题No5
- Windows XP 黑屏补丁
- 微信多订单合并付款_微信小商店订单合并打单,操作分享请收藏!
- Android 图片文字识别DEMO(基于百度OCR)
- 【open3d】安装open3d.whl之后,import报错ModuleNotFoundError: No module named ‘open3d.cpu‘
热门文章
- linux服务器开启公网访问_如何在外网用SSH访问内网LINUX服务器?
- JavaJDBC异常记录:关于sql上能够正常执行的sql语句,在java中执行了但是返回结果不一致问题
- 计算机WORD列宽行高怎么设置,高会《职称计算机》Word 2007:设置行高和列宽
- python热成像_matplotlib实现热成像图colorbar和极坐标图的方法
- mybatis动态sql,条件判断详解示例
- 上面两点下面一个三角形_【人人都能欣赏的数学证明】为什么三角形的三个内角相加是180度?...
- php+对象和数组装备_php对象和数组有什么区别
- 转自weiphone]在美做开发多年,写给国内apple开发新手的一些心得,无教程
- linux、mysql、nginx、tomcat 环境下压力测试的主要调试参数
- Windows远程桌面及其相关问题