Java中的泛型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的泛型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2182字,纯文字阅读大概需要4分钟。
内容图文
![Java中的泛型](/upload/InfoBanner/zyjiaocheng/643/3b7db88493d6471a8bd3ce2f6530683e.jpg)
泛型的本质是将类型参数化,即将所操作的数据类型编程一个参数。
特性:Java中的泛型只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型相关信息擦除,不会进入运行阶段。在逻辑上是多个不同的类型,实际上都是相同的类型。
class GeneralType <Type>{ Type object; public GeneralType(Type object){ this.object = object; } public Type getObj(){ return object; } } public class Test{ public static void main(String[] args){ GeneralType<Integer> i = new GeneralType<Integer>(2); GeneralType<Double> d = new GeneralType<Double>(0.33); System.out.println("i.object = " + (Integer)i.getObj()); System.out.println("i.object=" + (Integer)d.getObj()); //编译错误 } }
1.泛型方法
class GeneralMethod{ <Type>void printClassName(Type object){ System.out.println("object.getClass().getName()"); } } public class Test{ public static void main(String[] args){ GeneralMethod gm = new GeneralMethod(); gm.printClassName("Hello"); gm.printClassName(3); gm.printClassName(3.0f); gm.printClassName(3.0); } } //使用?作为 通配符 class GeneralType <Type>{ Type object; public GeneralType(Type object){ this.object = object; } public Type getObj(){ return object; } } class ShowType{ public void show(GeneralType<?> o){ System.out.println(o.getObj().getClass().getName()); } } public class Test{ public static void main(String[] args){ ShowType st = new ShowType(); GeneralType<Integer> i = new GeneralType<Integer>(2); GeneralType<String> s = new GeneralType<String>("Hello"); st.show(i); st.show(s); } } //运行结果 java.lang.Integer java.lang.String
有限制的泛型
在参数Type后面使用extends关键字并加上类名或者接口名,表明参数所代表的类型必须是该类的子类或者实现了该接口。对于实现了某接口的有限制泛型,也是使用extends关键字,而不是implements关键字。
class GeneralType <Type extends Number>{ Type object; public GeneralType(Type object){ this.object = object; } public Type getObj(){ return object; } } class ShowType{ public void show(GeneralType<?> o){ System.out.println(o.getObj().getClass().getName()); } } public class Test{ public static void main(String[] args){ ShowType st = new ShowType(); GeneralType<Integer> i = new GeneralType<Integer>(2); GeneralType<String> s = new GeneralType<String>("Hello");//非法,T只能是Number或Number的子类 st.show(i); st.show(s); } }
内容总结
以上是互联网集市为您收集整理的Java中的泛型全部内容,希望文章能够帮你解决Java中的泛型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。