java泛型注意事项_java泛型总结

1 说明

1)Generics是对java语言类型系统的一种扩展,以支持创建可以按类型进行参数化的类或者方法。

2)泛型的优点:

1. 类型安全(使用泛型时,编译器可以捕获附加类型信息,从而类型错误在编译时被捕获而不是运行时来进行检测)

2. 消除强制类型转换,减少了代码出错的可能性,并且使代码更加可读

2 泛型类实例

不使用泛型,此种情况需要类型转换

packagecom.wish.generic;public classPerson {privateObject x;privateObject y;privateObject z;publicObject getX(){returnx;

}public voidsetX(Object x){this.x =x;

}publicObject getY(){returny;

}public voidsetY(Object y){this.y =y;

}publicObject getZ(){returnz;

}public voidsetZ(Object z){this.z =z;

}public static voidmain(String[] args) {

Person s= newPerson();

s.setY(20);int x =(Integer)s.getX();

System.out.println(x);

}

}

使用泛型:

packagecom.wish.generic;public class PersonG{privateT1 x;privateT2 y;publicT1 getX(){returnx;

}public voidsetX(T1 x){this.x =x;

}publicT2 getY(){returny;

}public voidsetY(T2 y){this.y =y;

}public static voidmain(String[] args){

PersonG pg = new PersonG(); //实例化时即可定义类型

pg.setX(20);

pg.setY("this is a string");

System.out.println(pg.getX());

System.out.println(pg.getY());

}

}

3.泛型方法

说明:

1)泛型的声明必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前

2)和泛型类一样,可以声明多个泛型,用逗号隔开

泛型方法类:

packagecom.wish.generic;public classGenFunction {public static voiddisplay(T t){

System.out.println(t.getClass());

}

}

测试类:

packagecom.wish.generic;public classDriver {public static voidmain(String[] args) {

GenFunction.display(11);

GenFunction.display(11f);

GenFunction.display("abcd");

}

}

输出:

classjava.lang.Integerclassjava.lang.Floatclass java.lang.String

关于类型擦除的说明:类型擦除是指运行期不关注泛型的类型信息,但是t.getClass返回的是实例的类型类型而不是泛型的信息

4.注意事项

1)Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节代码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会被编译器在编译的时候去掉(类型擦除)

2)泛型类并没有自己独有的Class类对象。比如并不存在List.class或是List.class,而只有List.class。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值