`

JAVA 泛型初步认识

阅读更多
Java1.5增加了泛型的概念。泛型允许你抽象类型,最常见的例子就是容器类型,如集合类的层次。
List myIntList = new LinkedList(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3必须进行类型转换,
iterator()只会返回Object类型。
利用泛型修改上面的程序段
List<Integer> myIntList = new LinkedList<Integer>(); // 1’
myIntList.add(new Integer(0)); //2’
Integer x = myIntList.iterator().next(); // 3’,不必进行类型转换。

下面是java.util包中定义List和Iterator的代码摘要
public interface List<E> {
void add(E x);
Iterator<E> iterator();
}
public interface Iterator<E> {
E next();
boolean hasNext();
}


List<String> ls = new ArrayList<String>(); //1
List<Object> lo = ls; //2 编译错误
通常,如果Foo是Bar的一个子类型(子类或子接口),G是某种泛型声明,则G<Foo>不一定是G<Bar>的一个子型。
Wildcards通配符
访问一个集合中的所有元素:
老版本:
void printCollection(Collection c) {
Iterator i = c.iterator();
for (k = 0; k < c.size(); k++) {
System.out.println(i.next());
}}
利用泛型:
void printCollection(Collection<Object> c) {
for (Object e : c) {
System.out.println(e);
}}
老版本可以接受任何类型的集合类作为参数,但是新版本的类型只能是Collection<Object>。
那么所有类型的集合的父类型是什么呢?是Collection<?>。
void printCollection(Collection<?> c) {
for (Object e : c) {
System.out.println(e);
}}

Collection<?> c = new ArrayList<String>();
c.add(new Object()); // compile time error
我们不知道c代表的类型,所以不能向它添加对象。不能添加任何东西,唯一例外是null,因为它是每个类型的子类。
分享到:
评论

相关推荐

    Java泛型编程指南.pdf

    Java泛型编程指南.pdf 此文章译自SUN的泛型编程指南

    Java泛型和集合

    Java Generics and Collections 英文版,详细描述java 泛型技术

    java 泛型接口示例

    java 泛型接口示例 java 泛型接口示例 java 泛型接口示例

    JAVA泛型加减乘除

    这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...

    java 泛型类的类型识别示例

    java 泛型类的类型识别示例 java 泛型类的类型识别示例 java 泛型类的类型识别示例

    java 泛型方法使用示例

    java 泛型方法使用示例 java 泛型方法使用示例 java 泛型方法使用示例

    1.java泛型定义.zip

    1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....

    java泛型技术之发展

    java泛型技术之发展,学习JAVA 泛型的不错东东

    4.java泛型的限制.zip

    4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip...

    Java泛型的用法及T.class的获取过程解析

    主要介绍了Java泛型的用法及T.class的获取过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java泛型总结

    深入理解java泛型,包括类名泛型的定义,方法泛型定义,泛型的返回

    java泛型学习ppt

    java,学习java泛型,java培训之泛型.pptxjava培训之泛型.pptxjava培训之泛型.pptxjava培训之泛型.pptx

    很好的Java泛型的总结

    很好的Java泛型的总结,看完之后你一定会知道java泛型的底层机制,你一定会学会Java泛型!

    java泛型详解.pdf

    java泛型详解.pdf

    思维导图之Java泛型详解

    思维导图之Java泛型详解

    Java泛型使用详细分析.pdf

    Java泛型使用详细分析.pdf

    实例讲解Java泛型编程的快速入门

    实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门实例讲解Java泛型编程的快速入门

    Java泛型技术之发展

    Java泛型技术之发展

    JAVA泛型简单排序实例

    JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;

Global site tag (gtag.js) - Google Analytics