如何进行Java 泛型的理解与等价实现
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,如何进行Java 泛型的理解与等价实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java泛型的好处是安全简单。在Ja
千家信息网最后更新 2025年01月16日如何进行Java 泛型的理解与等价实现
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
如何进行Java 泛型的理解与等价实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Java泛型的好处是安全简单。
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
Java泛型在使用中还有一些规则和限制:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
4、泛型的参数类型可以使用extends语句,例如。习惯上成为"有界类型"。
5、泛型的参数类型还可以是通配符类型。例如Class classType = Class.forName(java.lang.String);
泛型还有接口、方法等等,内容很多,需要花费一番功夫才能理解掌握并熟练应用。在此给出我曾经了解泛型时候写出的两个例子(根据看的印象写的),实现同样的功能,一个使用了泛型,一个没有使用,通过对比,可以很快学会泛型的应用,学会这个基本上学会了泛型70%的内容。
例子一:使用了Java泛型
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版本 GenintOb=new Gen(88); intOb.showTyep(); int i= intOb.getOb(); System.out.println("value= " + i); System.out.println("----------------------------------"); //定义泛型类Gen的一个String版本 GenstrOb=new Gen("Hello Gen!"); strOb.showTyep(); String s=strOb.getOb(); System.out.println("value= " + s); } } |
例子二:没有使用Java泛型
public class Gen2 { private Object ob; //定义一个通用类型成员 public Gen2(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 GenDemo2 { public static void main(String[] args) { //定义类Gen2的一个Integer版本 Gen2 intOb = new Gen2(new Integer(88)); intOb.showTyep(); int i = (Integer) intOb.getOb(); System.out.println("value= " + i); System.out.println("----------------------------------"); //定义类Gen2的一个String版本 Gen2 strOb = new Gen2("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 0 |
类型
参数
版本
实际
例子
安全
内容
情况
时候
结果
强制
运行
两个
多个
好处
成员
错误
帮助
应用
编译
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
炫图服务器
浙江嗨皮网络技术有限公司
网站服务器 安全证书
网络安全需要出差吗
数据库应用技术第一版詹英主编
对计算机网络技术的认知报告
国泰安数据库价格
绝地求生亚服哪个服务器最肥
嵌入式式软件开发工程师
华为服务器 U盘启动
进入21世纪 互联网科技
微信使用了哪些网络技术
你他科技互联网在线教育
h3c服务器网络不好使
广州新华互联网科技学校电话号
小型至强服务器
新建数据库sql语句
uniapp 数据库分组及排序
软件开发包干价合同条款
星辰变单机版服务器超时
html5网站有没有数据库
美国网络技术保护
网络安全网络维护
首都网络安全日参与主题
网络安全大赛简称什么
数据库字段cast
wow数据库7.0
什么是金融网络安全
华为网络技术模式
如何用数据库查看用户信息