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语言的基础知识进行了详细介绍,这包括Java的核心概念、基础语法和基本结构,旨在让读者能够对Java语言有一个初步的认识和理解。之后,书中通过具体的实例,对Java语言进行了系统化的讲解,帮助读者更...
1. **Java简介**:介绍Java的历史、特点、应用领域以及与其它编程语言的对比,使学习者对Java有一个初步认识。 2. **环境配置**:讲解如何安装Java Development Kit (JDK) 和设置环境变量,为后续开发工作奠定基础...
Java简易基础(速成版)课程...通过这个速成版的Java简易基础课程,你可以快速建立起对Java编程的初步认识,并具备基本的编程能力。然而,Java语言的深度和广度远不止于此,深入学习和实践将是持续提升编程技能的关键。
9. **泛型**:Java泛型是Java SE 5.0引入的新特性,用于增强类型安全性和代码可读性,减少强制类型转换。 10. **接口与模块化**:Java 8引入了默认方法,Java 9引入了模块系统(Project Jigsaw),这些都是现代Java...
13. **Java EE基础**:对Java企业版(Java EE)有一个初步认识,了解Servlet和JSP的基础知识,为Web开发打下基础。 通过《Head First Java 中文版》的深入阅读和实践,初学者不仅能够掌握Java编程语言的基本技能,...
1. **Java基础**:Java语言的基础包括数据类型(如整型、浮点型、字符型和布尔型)、变量、运算符、流程控制(如if语句、switch语句、for循环、while循环等)、方法定义和调用,以及类和对象的初步认识。 2. **面向...
通过学习这些基础知识,读者可以建立起对面向对象编程的初步认识。 类和对象是Java的核心,书中详细讲解了如何定义类、创建对象、封装数据、以及类的继承和多态性。对于面向对象编程的三大特性——封装、继承和多态...
【描述】:“适当初入门的人学习JAVA,对J2SE有个初步认识和了解”这部分说明了这个资源是为Java初学者设计的,特别适合那些刚开始接触编程或者对Java没有基础的人群。J2SE是Java平台的标准版,包含了编写...
1. **基础语法**:包括数据类型、变量、运算符、流程控制(如if语句、switch语句、循环结构for、while等)、方法定义和调用,以及类与对象的初步认识。 2. **面向对象编程**:这是Java的核心特性,包括类的定义、...
Java语言程序设计作为一门重要的编程课程,其第一章的内容主要涵盖了绪论,即对整个课程和Java语言的初步介绍,以及对后续...通过本章的学习,学习者将对Java有一个初步的认识,并为后续更深入的学习打下坚实的基础。
在开发这样一个编译器时,开发者可能会遇到一些挑战,比如处理Java的复杂特性,如泛型、接口、异常处理等。此外,还需要考虑如何有效地实现错误处理,当源代码不符合语法规则时,能提供有用的错误消息。通过这个项目...
1. **Java基础知识**:书中首先介绍了Java的历史、特点以及安装配置,让读者对Java有一个初步的认识。接着,详细讲解了Java的基本语法,包括数据类型、变量、运算符、流程控制语句(如if、switch、for、while等)...
这套教程将逐步引导你从Java的初步认识,到能够编写简单的程序,并逐步接触更复杂的面向对象设计和实际应用开发。通过不断地练习和实践,你将能够掌握这个强大的编程工具,为未来的编程生涯打下坚实的基础。
本书首先会介绍Java的历史和发展,让读者对这门语言有初步的认识。接下来,会详细讲解Java环境的搭建,包括JDK(Java Development Kit)的下载与安装,以及配置Java开发环境变量。 在基础语法部分,读者会学习到...
通过这些练习,初学者将逐步建立起对Java编程的系统认识,并能够在实践中不断巩固和提升编程能力。记得在解决每个练习题后,不仅要理解代码的工作原理,还要尝试思考其他可能的解决方案,以培养解决问题的思维能力和...
通过《21天学通Java》的系统学习,初学者不仅能够掌握Java编程的基本技能,还能建立起对整个Java生态系统的初步认识。无论是为了个人兴趣还是职业发展,这本书都是一份宝贵的资源。同时,配合实际编程练习,将理论...
14. **Java EE**:简述Java企业版,包括Servlet、JSP、Filter、Listener等Web开发技术,以及MVC设计模式和Spring框架的初步认识。 通过【Java课件_张孝详】中的内容,学习者可以系统性地学习Java编程,逐步提高编程...
",让学员对Java编程有个初步认识。 **Day02-03: Java语法基础** 这部分涵盖了Java的基础语法,如变量、数据类型(包括基本类型和引用类型)、运算符、流程控制语句(if、switch、for、while等)、数组的声明、初始...
在Java基础知识部分,首先会介绍Java的历史和应用领域,让你对这门语言有一个全面的认识。接着,会从安装Java开发环境(JDK)开始,讲解如何设置环境变量,确保开发环境的正确配置。 然后,教程将深入到Java语法...
这一部分是入门的基础,让读者对Java有一个初步的认识。 第二章至第四章会逐步讲解Java的基本语法,如数据类型、变量、常量、运算符、控制结构(如if语句和循环)等。这些内容构成了程序的基本骨架,是编写任何程序...