Java语言引出泛型的好处是保险简略

 泛型是Java SE 1.5的新特点,泛型的性质是参数化部类,且不说所操作的数据部类被指定为一个参数。这种参数部类可以用在种、接口和步骤的创设中,诀别称做泛型类、泛型接口、泛型步骤。

  Java语言引出泛型的好处是保险简略。

  在Java SE 1.5先头,没泛型的状况的停,经过对部类Object的引述来兑现参数的“随便化”,“随意化”带回的缺点是要做显式的挟制门类变换,而这种变换是要求开发者对现实参数部类可以预知的情况下开展的。关于挟制门类变换错处的景况,编译器或者不提醒差错,在运作的时分才出现异常,这是一个保险隐患。

  泛型的好处是在编译的时分稽查门类保险,而且全部的挟制变换都是自动和隐式的,增高代码的重用率。

  泛型在施用中再有一些规约和限制:

  一、泛型的门类参数只得是种门类(包括自定义种),不能是简略门类。

  二、同一种泛型可以对应多个版本(由于参数部类是不确定的),不同版本的泛型类范例是不兼容的。

  三、泛型的部类参数可以有多个。

  四、泛型的参数部类可以施用extends话语,比如。习惯上变为“有界部类”。

  五、泛型的参数部类还可以是通配符门类。比如Class classType = Class.forName(java.lang.String);

  泛型再有接口、步骤之类,内容很多,亟需花销一番工夫才华懂得掌握并熟练使用。在此付出我曾经懂得泛型时分写出的两个事例(依据看的印象写的),兑现一样的效能,一个应用了泛型,一个没施用,透过对照,可以很快学会泛型的运用,学会这个大抵学会了泛型70%的内容。

  例证1:施用了泛型

public class Gen {
 private T ob; //定义泛型成员变量

 public Gen(T ob) {
  this.ob = ob;
 }

 public T getOb() {
  return ob;
 }

 public void setOb(T ob) {
  this.ob = ob;
 }

 public void showTyep() {
  System.out.println("T的现实部类是: " + ob.getClass().getName());
 }
}

public class GenDemo {
 public static void main(String[] args){
 //定义泛型类Gen的一个Integer版本
 Gen intOb=new Gen(88);
 intOb.showTyep();
 int i= intOb.getOb();
 System.out.println("value= " + i);

 System.out.println("----------------------------------");

 //定义泛型类Gen的一个String版本
 Gen strOb=new Gen("Hello Gen!");
 strOb.showTyep();
 String s=strOb.getOb();
 System.out.println("value= " + s);
}
}

  事例2:没应用泛型

public class Gen二 {
 private Object ob; //定义一个通用门类成员

 public Gen二(Object ob) {
  this.ob = ob;
 }

 public Object getOb() {
  return ob;
 }

 public void setOb(Object ob) {
  this.ob = ob;
 }

 public void showTyep() {
  System.out.println("T的现实部类是: " + ob.getClass().getName());
 }
}

public class GenDemo二 {
 public static void main(String[] args) {
  //定义种Gen二的一个Integer版本
  Gen二 intOb = new Gen二(new Integer(88));
  intOb.showTyep();
  int i = (Integer) intOb.getOb();
  System.out.println("value= " + i);

  System.out.println("----------------------------------");

  //定义种Gen二的一个String版本
  Gen二 strOb = new Gen二("Hello Gen!");
  strOb.showTyep();
  String s = (String) strOb.getOb();
  System.out.println("value= " + s);
 }
}

  运作结果:

  两个事例运作Demo结果是雷同的,控制台输出结果如次:

  T的现实部类是:

java.lang.Integer
value= 88
----------------------------------
T的现实门类是: java.lang.String
value= Hello Gen!

Process finished with exit code 零

  瞅清楚这个,之后根本的泛型施用和代码翻阅就不成问题了。

java exception | 我的异常网 | 异常 | exception

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值