`
healthandbeauty
  • 浏览: 164961 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

认识泛型

    博客分类:
  • java
阅读更多
在没有泛型以前,从集合里面多到的对象,必须一个个强制类型转换。
如果插入了类型错误的对象,在运行时的转换处理就会出错。有了泛型之后,可以告送编译器每个集合中接受什么类型的对象。编译器将自动为你转化,并在编译时告知是否插入了类型错误的对象。

请不要在新代码中使用原生态类型
声明中具有一个或者多个类型的参数的类或者接口就称为泛型类或者接口。
List接口,就只有单个类型参数E,表示列表元素类型。这个接口的名称应该是指现在的List<E>(读做E的列表),但人们经常把它简称为List。泛型类和接口通称为泛型。
原生态类型List和参数化类型List<Object>之间到底有什么区别呢?不严格的说,前者逃避了泛型检查,后者则明确告送编译器,它能够支持任意类型的对象。虽然你可以将List<String>传递给类型List的参数,但是不能将它传给类型List<Object>的参数。泛型有子类型的化的规则,List<String>是原生态类型List的子类类,而不是参数化类型List<Object>的子类型。如果使用List这样的原始态类型,就会失去类型的安全性,但是使用像List<Object>这样的参数化类型,则不会。
public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> ss = new ArrayList<String>();
		unSafeAddValue(ss, new Integer(2));
		System.out.println(ss.get(0));
	}
	
	public static void unSafeAddValue(List list,Object o){
		list.add(o);
	}


以上程序就会出现

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer
at classandmemberacess.Generic.main(Generic.java:19)
异常。为啥呢?自己思考.

如果要使用泛型,单不确定或者关心实际的类型参数,就可以使用一个问号代替,这是java5提供的一种安全的替代方法,成为无限制的通配副类型。
分享到:
评论
1 楼 kimmking 2009-11-02  
healthandbeauty 写道
在没有泛型以前,从集合里面多到的对象,必须一个个强制类型转换。
如果插入了类型错误的对象,在运行时的转换处理就会出错。有了泛型之后,可以告送编译器每个集合中接受什么类型的对象。编译器将自动为你转化,并在编译时告知是否插入了类型错误的对象。

请不要在新代码中使用原生态类型
声明中具有一个或者多个类型的参数的类或者接口就称为泛型类或者接口。
List接口,就只有单个类型参数E,表示列表元素类型。这个接口的名称应该是指现在的List<E>(读做E的列表),但人们经常把它简称为List。泛型类和接口通称为泛型。

java的伪泛型啊

相关推荐

    java泛型实践

    android泛型技术常用实践,让你更轻松认识泛型的重要性。

    泛型教学视频

    泛型教学视频,内涵ppt教材。专业资深微软工程师授课,从简入繁,从易入难!让你更清楚的认识泛型mm!

    SUN公司Java泛型编程文档

    Sun公司的Java泛型编程文档,英文原版和网络翻译版,想对泛型有更清楚的认识的朋友可以看看,必定会有所帮助

    java泛型Demo

    java泛型的例子演示.经典程序...让程序员认识java泛型的好处!

    Java优化编程(第2版)

    13.1 认识泛型 13.1.1 使用泛型的收益 13.1.2 泛型与jdk 5.0中的集合类 13.2 使用泛型 13.2.1 创建支持泛型的类 13.2.2 泛型的自动解包装与自动包装的功能 13.2.4 限制泛型中类型参数的范围 小结 第14章 ajax技术与...

    侯捷 STL标准库与泛型编程 课件

    侯捷 网易云课堂 STL标准库与泛型编程 配套课件 1. 认识headers、版本、重要资源 2. STL体系结构基础介绍 3. 容器之分类与各种测试(一) 。。。。。。。

    用Java语言写的绘图工具--使用集合和泛型

    学过之后对AWT事件模型、菜单项、图形绘制、集合与泛型会有更深的认识

    一个小例子聊聊 JAVA 泛型基础

     对泛型的认识不够,导致代码出现了BUG。  第一个原因可以通过以后编码谨慎的打日志来解决,我们主要来一起回顾下 JAVA 泛型基础。  一个小栗子  先看下面一个例子,test1实例化一个List容器的时候没有指定...

    C#初级中级学习代码 每个知识点都可以正常使用 C#详细源码

    资源内容:01委托的基本认识,02委托的基本应用,03委托的基本应用练习与总结,04_02自己写泛型委托,04_03Action泛型委托,04泛型委托,05泛型委托Func,06多播委托,07匿名方法,08Lambda表达式简介之输入参数,09匿名方法、...

    C++模板 PPT

    介绍C++中的泛型编程思想,并介绍c++模板的概念,帮助你学习STL的相关知识!对泛型编程有一个初步的认识!

    JAVA-微讲堂01环境变量-陈冬

    讲:陈冬 第一课:计算机中的环境变量 第二课:认识JVM 安装JDK 第三课:认识JAVA中的变量 第三课:理解类与对象 ...第八课:泛型 第九课:XML 第十课:多线程 第十一课:socket 第十二课:jdbc 第十三课:设计模式

    STL源码剖析

    此时,他已经认识C语言中指针(pointer)的威力,他表示一个程序员只要有些许硬件知识,就很容易接受C语言中指针的观念,同时也了解到C语言的所有数据结构均可以指针间接表示,这点是C与Ada、Scheme的最大不同。...

    难得C++全栈!侯捷老师C++天龙八部合集+专业辅导 C++技能超级实战+算法实践+系统设计

    认识headers、版本、重要资源.mp4 ├─10. 技术基础:操作符重载and模板(泛化, 全特化, 偏特化).mp4 ├─11. 分配器.mp4 ├─12. 容器之间的实现关系与分类.mp4 ├─13. 深度探索list(上).mp4 ├─14. 深度探索...

    我做的C# 程序基础实例

    我做的C# 程序基础实例及源码大全(抽像类.泛型.接口,结构体,枚举,事件,委托,虚方法) 本人QQ:280067279,加时注明:CSDN,我也想多认识些编程的朋友.

    体检套餐管理系统

    开发简单的体检套餐系统,包括增加套餐,减少套餐,对泛型集合有一个很好的认识

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    10.6.5使用泛型简化集合操作 10.7Java中的二维集合 10.7.1使用Map集合 10.7.2使用Hashtable和Properties 10.8小结 第11章Java IO操作 11.1认识IO操作 11.2用File类操作文件 11.2.1认识File类 11.2.2使用...

    .NET之美:.NET关键技术深入分析

    第6章认识.NET平台 6.1引子 6.2 CIL——公共中间语言 6.3 BCL和FCL 6.3.1 BCL——基类库 6.3.2 FCL——框架类库 6.4 CTS——公共类型系统 6.5 CLS——公共语言规范 6.6 CLR——公共语言运行时 6.6.1程序集...

Global site tag (gtag.js) - Google Analytics