博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java的泛型和object的比较
阅读量:2445 次
发布时间:2019-05-10

本文共 3002 字,大约阅读时间需要 10 分钟。

在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的,而这种转换是要求开发者对类型可以预知的情况下进行的。对于错误的情况,可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查,并且所有的都是和的,提高代码的重用率。
 
[java]    
  1. public class Gen<T> {  
  2.     private T ob; // 定义泛型成员变量  
  3.   
  4.     public Gen(T ob) {  
  5.         this.ob = ob;  
  6.     }  
  7.   
  8.     public T getOb() {  
  9.         return ob;  
  10.     }  
  11.   
  12.     public void setOb(T ob) {  
  13.         this.ob = ob;  
  14.     }  
  15.   
  16.     public void showType() {  
  17.         System.out.println("T的实际类型是: " + ob.getClass().getName());  
  18.     }  
  19. }  
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 showType() { System.out.println("T的实际类型是: " + ob.getClass().getName()); }}
[java]    
  1. public class GenDemo {  
  2.     public static void main(String[] args) {  
  3.         // 定义泛型类Gen的一个Integer版本  
  4.         Gen<Integer> intOb = new Gen<Integer>(88);  
  5.         intOb.showType();  
  6.         int i = intOb.getOb();  
  7.         System.out.println("value= " + i);  
  8.         System.out.println("----------------------------------");  
  9.         // 定义泛型类Gen的一个String版本  
  10.         Gen<String> strOb = new Gen<String>("Hello Gen!");  
  11.         strOb.showType();  
  12.         String s = strOb.getOb();  
  13.         System.out.println("value= " + s);  
  14.     }  
  15. }  
public class GenDemo {	public static void main(String[] args) {		// 定义泛型类Gen的一个Integer版本		Gen
intOb = new Gen
(88); intOb.showType(); int i = intOb.getOb(); System.out.println("value= " + i); System.out.println("----------------------------------"); // 定义泛型类Gen的一个String版本 Gen
strOb = new Gen
("Hello Gen!"); strOb.showType(); String s = strOb.getOb(); System.out.println("value= " + s); }}
 
[java]    
  1. public class Gen2 {  
  2.     private Object ob; //定义一个通用类型成员  
  3.     public Gen2(Object ob) {  
  4.     this.ob = ob;  
  5.     }  
  6.     public Object getOb() {  
  7.     return ob;  
  8.     }  
  9.     public void setOb(Object ob) {  
  10.     this.ob = ob;  
  11.     }  
  12.     public void showTyep() {  
  13.     System.out.println("T的实际类型是: " + ob.getClass().getName());  
  14.     }  
  15. }  
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());	}}
[java]    
  1. public class GenDemo2 {  
  2.     public static void main(String[] args) {  
  3.         //定义类Gen2的一个Integer版本  
  4.         Gen2 intOb = new Gen2(new Integer(88));  
  5.         intOb.showTyep();  
  6.         int i = (Integer) intOb.getOb();  
  7.         System.out.println("value= " + i);  
  8.         System.out.println("---------------------------------");  
  9.         //定义类Gen2的一个String版本  
  10.         Gen2 strOb = new Gen2("Hello Gen!");  
  11.         strOb.showTyep();  
  12.         String s = (String) strOb.getOb();  
  13.         System.out.println("value= " + s);  
  14.         }  
  15. }  
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);		}}
你可能感兴趣的文章
安全更新支持哪些macOS版本?
查看>>
unity ubuntu_如何在Ubuntu Unity Dash中禁用Amazon Search Ads
查看>>
win 8 metro交互_将您喜欢的网站固定到Windows 8中的Metro Start屏幕
查看>>
安卓 电量 消耗 监控_您的所有电器消耗多少电量?
查看>>
程序全局热键_如何在Linux下将全局热键绑定到WINE程序
查看>>
如何将Amazon Echos用作家庭PA系统
查看>>
天气温度图颜色_如何使天气图块以摄氏度为单位显示温度
查看>>
ram coe文件_我可以增加页面文件而不购买更多RAM吗?
查看>>
硬盘主从盘跳线图解_硬盘背面的跳线有什么作用?
查看>>
拇指复制文件程序_如何在Windows PC,拇指驱动器或SD卡上恢复意外删除的文件
查看>>
windows虚拟桌面_使用免费实用程序在Windows中创建多个虚拟桌面
查看>>
新的YouTube儿童设置仅允许实际人审核的视频
查看>>
克隆加密狗和原加密狗_遥控钥匙和加密狗有什么区别?
查看>>
pxe ubuntu_如何从Windows Server 2008 PXE引导Ubuntu映像
查看>>
如何在纵向的Word文档中创建横向页面
查看>>
word中如何插入 符号_如何在Word 2013中使用符号
查看>>
rss阅读器_赶上您喜欢的网站的最佳免费RSS阅读器
查看>>
桌面上下文菜单 怎么配置_在Windows 7中轻松将程序快捷方式添加到桌面上下文菜单...
查看>>
Linux文件系统与Windows文件系统不同的6种方法
查看>>
ram内存不足_我的计算机中的RAM可以容纳多少个内存地址?
查看>>