一:
将原本确定不变的数据类型参数化
二:
作为对原有Java类型体系的扩充,使用泛型可以提高Java应用程序的类型安全、可维护性和可靠性
三:
创建集合容器时规定其允许保存的元素类型,然后由编译器负责添加元素的类型合法性检查,
再去用集合元素时则不必再进行造型处理(cast强制类型转换)
public class GenericFoo<T> {// 泛型类
private T foo;
public T getFoo() {
return foo;
}
public void setFoo(T foo) {
this.foo = foo;
}
public static void main(String[] args) {
GenericFoo<Boolean> foo1 = new GenericFoo<Boolean>();// 在声明的时候指定类型
GenericFoo<Integer> foo2 = new GenericFoo<Integer>();
// foo1=foo2;//类型不一样,赋值出错
foo1.setFoo(new Boolean(true));
Boolean b = foo1.getFoo();
System.out.println(b);
foo2.setFoo(new Integer(10));
Integer num = foo2.getFoo();
System.out.println(num);
// GenericFoo foo3 = new GenericFoo();//相当于下面的代码
GenericFoo<Object> foo3 = new GenericFoo<Object>();
foo3.setFoo("helloworld");
Integer in = (Integer) foo3.getFoo();// 编译时不出错
System.out.println(in);// 运行时会出错
Date d1 = new Date();
Date d2 = new Date();
d1 = d2;
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("helloworld");
// list.add(1);//添加的类型不是指定的String类型会报错
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
// for-each循环
for (String string : list) {
System.out.println(string);
}
// 迭代循环
for (Iterator<String> it = list.iterator(); it.hasNext();) {
System.out.println(it.next());
}
}
}
分享到:
相关推荐
由于类型的确定在编译之前已经确定,因此,泛型编程实际上是某种形式上的静态多态。 在 C++ 中,模板分为两种:函数模板和类模板。函数模板是一类函数的抽象,由函数模板产生的函数称为模板函数,是函数模板的实例...
讲:陈冬 第一课:计算机中的环境变量 第二课:认识JVM 安装JDK 第三课:认识JAVA中的变量 第三课:理解类与对象 第三课附加:值传递和对象传递 ...第十一课:socket 第十二课:jdbc 第十三课:设计模式
泛型是TypeScript中一种强大的特性,它允许我们在编写代码时创建可重用的组件,这些组件能够适应各种不同类型的参数。在前端开发中,掌握泛型有助于编写更灵活、更具可维护性的代码。 首先,泛型的基础在于类型变量...
在这个“Java基础入门自学课件 第11章 泛型”中,我们可以期待学习到以下几个核心知识点: 1. **泛型的基本概念**:泛型允许我们在定义类、接口和方法时指定一种或多种类型参数,这样在实际使用时可以传入具体的...
**第十三章 泛型程序设计** 泛型是Java编程语言中的一个重要特性,引入于Java 5.0,它允许在定义类、接口和方法时使用类型参数,从而提高了代码的类型安全性和重用性。泛型的主要目标是提供一种方式来限制容器对象...
Java泛型是自Java SE 5.0引入的一项重要特性,它允许在定义类、接口和方法时使用类型参数,从而增强了代码的类型安全性和可读性。泛型的使用可以减少强制类型转换的麻烦,并在编译时就发现可能存在的类型错误。本...
第11章泛型和容器类(第7版)
"C++ primer 第十六章 泛型 实现自定义Queue 修改版"的主题主要围绕如何利用C++的模板机制来实现一个自定义的队列(Queue)容器。在实现过程中,可能会遇到模板编译错误,解决这些问题需要对C++的模板语法有深入的...
假设有一个泛型方法`printFirstElement`,它可以接受任何类型的列表并打印出第一个元素。使用通配符,可以编写如下代码: ```java public static <T> void printFirstElement(List<? extends T> list) { System.out...
**集合框架与泛型**是Java编程语言中的核心特性,对于初学者来说,理解并熟练掌握这两个...结合提供的课件“第六章 集合框架与泛型.ppt”,初学者可以通过系统学习和实践,进一步提升对Java高级特性的理解和应用能力。
- `find_first_of`算法:查找两个范围内的第一个匹配元素,允许使用自定义比较函数`pr(*it1, *it2)`。 2. 改写元素算法: 这类算法会改变容器内的元素值,但在使用时需确保有足够的空间来容纳修改。例如: - `...
在C++编程中,泛型算法是用于处理各种不同数据结构(如数组、向量、列表等)的一组通用函数,这些函数不依赖于特定的数据类型。本篇内容主要涉及了两个重要的泛型算法——`count`和`accumulate`,以及如何在实际编程...
根据Kiseon Paik的Live Java Study课程进行的个人学习 第一周:什么是JVM,Java代码...第十周:多线程编程 第11周的任务:枚举 第12周的作业:注释 第13周的挑战:I / O 第14周的任务:泛型 第15周的任务:Lambda表达
第一天:数据类型第2天:操作员第3天:条件语句简介第四天:课堂与实例第五天:循环第6天:让我们回顾一下第7天:阵列第8天:字典和地图第9天:递归3 第10天:二进制数第11天:2D阵列第十二天:继承第13天:抽象课...
031106_【第11章:Java常用类库】_日期操作类(DateFormat、SimpleDateFormat)笔记.pdf 031107_〖第11章:Java常用类库〗_实例操作:取得当前日期笔记.pdf 031108_【第11章:Java常用类库】_Math与Random类笔记.pdf...
第十一章通常会涉及一些高级话题或实际应用案例,可能是关于集合框架、多线程、网络编程、IO流或者异常处理等内容。课后习题是检验学习成果、提升编程技能的重要环节,通过解答这些问题,初学者可以巩固理论知识,...