泛型定义

泛型是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泛型一:泛型的定义及规则相关推荐

  1. java软件工程师 英文_java开发工程师英文求职信

    java开发工程师英文求职信 Dear manager: Hello! My name is XXXXX, is a computer software professional graduates. ...

  2. java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型

    Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...

  3. java 泛型和集合_Java集合和泛型

    集合 常用的集合有ArrayList,TreeSet,HashMap,HashSet. ArrayList 最常用的集合,每次插入都在后面追加元素. TreeSet 以有序状态保持并可防止重复.当你需 ...

  4. java无法实例化类型_java – 无法实例化泛型中的类型

    我有这门课 public class Tree { //List of branches for this tree private List> branch = new ArrayList&g ...

  5. java 日期格式化 英文_Java中使用SimpleDateFormat输出英文日期(原创)

    Java中使用SimpleDateFormat输出英文日期(原创) 由萱萱 发表于2013-12-14 如果你想输出英文日期,形如: September 29, 2013 可以借助java.text. ...

  6. JAVA匹配所有英文_java匹配汉字、英文、数字

    使用的正则表达式 package Test_1; import java.util.Scanner; public class Test_7 { /** * @param args */ public ...

  7. java开发工程师英文_java工程师英文简历范文

    java工程师英文简历范文 要仔细检查已成文的`个人简历,绝对不能出现错别字.语法和标点符号方面的低级错误.最好让文笔好的朋友帮你审查一遍,因为别人比你自己更容易检查出错误. java工程师英文简历范 ...

  8. java编程的英文_Java编程基础常见英语词汇总编

    Java编程基础常见英语词汇总编 以下是百分网小编收集的Java编程基础常见英语词汇,希望对您的学习有所帮助! Java编程基础常见英语词汇 OO:object-oriented ,面向对象 OOP: ...

  9. java技术简介英文_Java技术常见的英文缩写

    1. URL,Uniform Resource Location,统一资源定位符. 2. JDBC,Java DataBase Connectivity,Java数据库连接. 3. JSP,Java ...

  10. 关于java的参考文献英文_java英文参考文献

    programming problems, what about the other 20 percent-the "really hard stuff?" The most po ...

最新文章

  1. 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
  2. 年薪50万,副职级别!注册安全工程师的前途如此光明?
  3. 详解synchronized锁的各种用法及注意事项
  4. C#复制数组的两种方式,以及效率比较
  5. 特质波动率python
  6. nginx alias正则表达式
  7. 面试常考:bitmap判断其中是否有相同元素
  8. 为什么不应该重写 service 方法?
  9. 安卓开发仿微信图片拖拽_使用Android 模仿微信朋友圈图片拖拽返回
  10. FILE 结构体的定义,inode ,软链接和硬链接的理解
  11. xml文件的创建和插入节点【原创】
  12. “凡事不发朋友圈的人,都是过的不好的人”你认同这句话吗为什么?
  13. 记一次Animator状态快速切换问题的解决
  14. Power Apps 拍照上传
  15. 【雅思大作文考官范文】——第九篇:‘CCTV essay’
  16. python面试题No5
  17. Windows XP 黑屏补丁
  18. 微信多订单合并付款_微信小商店订单合并打单,操作分享请收藏!
  19. Android 图片文字识别DEMO(基于百度OCR)
  20. 【open3d】安装open3d.whl之后,import报错ModuleNotFoundError: No module named ‘open3d.cpu‘

热门文章

  1. linux服务器开启公网访问_如何在外网用SSH访问内网LINUX服务器?
  2. JavaJDBC异常记录:关于sql上能够正常执行的sql语句,在java中执行了但是返回结果不一致问题
  3. 计算机WORD列宽行高怎么设置,高会《职称计算机》Word 2007:设置行高和列宽
  4. python热成像_matplotlib实现热成像图colorbar和极坐标图的方法
  5. mybatis动态sql,条件判断详解示例
  6. 上面两点下面一个三角形_【人人都能欣赏的数学证明】为什么三角形的三个内角相加是180度?...
  7. php+对象和数组装备_php对象和数组有什么区别
  8. 转自weiphone]在美做开发多年,写给国内apple开发新手的一些心得,无教程
  9. linux、mysql、nginx、tomcat 环境下压力测试的主要调试参数
  10. Windows远程桌面及其相关问题