`

java 范型

    博客分类:
  • java
 
阅读更多

类与方法都可以被范型化。类范型由类名后面跟上一个或几个三角括号包含的类型变量组成。

 

ArrayList<E>  代表的意思是ArrayList类里存放的数据类型,只能是E类型及其子类,如果不是,编译时会编译不通过。

 

public E get(int index) 代表的意义是该方法返回的类型是E类型,使用的时候可以直接当做E类型使用。

E是什么类型呢,E可以是任何类型。

 

例如:只需要存放String类型数据的ArrayList ,可以声明为:

List<String>  list = new ArrayList<String>();

 

 

 

package home;

 

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

 

/*

 * generic 范型的使用

 */

 

public class GenericTest {

 

public static void main(String[] args) {

 

ArrayList<String> array = new ArrayList<String>();

 

array.add("hello");

//array.add(1);    报错,因为这里已经声明了,array只能存放String,以及其子类类型

 

for(String a: array){

System.out.println(a);

}

 

ArrayList<Integer> array2 = new ArrayList<Integer>();

array2.add(1);

array2.add(40);

 

for(int a: array2){

System.out.println(a);

}

 

 

 

//使用多个范型  Map<String, Date>

Map<String, Date> map = new HashMap<String ,Date>();

map.put("time1", new Date());

map.put("time2", new Date());

map.put("time3", new Date());

 

for(String key : map.keySet()){

Date date = map.get(key);

System.out.printf("key: %1$s, value :%2$tF %2$sT%n",key ,date);

}

 

 

List <Date> datelist = new ArrayList<Date>();

List<Integer> intList = new ArrayList<Integer>();

 

datelist.add(new Date());

datelist.add(new Date());

 

intList.add(3);

intList.add(5);

 

 

numberList(intList);

dateList(datelist);

 

 

 

}

/*

* 范型通配符

* 通配符的不确定性,通过通配符只能用来进行类型安全检查,而不能用来声明具体的范型

* 范型允许使用通配符(?) ,?代表任何数据类型,使用List<?> list ,表示List里可以放任何数据类型,

* ?一般与extends 连用,表示指定类型以及其所有子类

* ?与super连用,表示指定类型以及指定类型的所有父类

* List <?> list = new ArrayList<?>();   //编译出错,因为通配符只能用来进行安全检查,这里是作为了声明

* List <? extends Number> list2 = new ArrayList<? extends Number>();

*/

 

 

 

//List <? extends Number> list  用来检查,list里面存放的数据类型必须是Number,以及其子类型

public static void  numberList(List <? extends Number> list){

for(Number num: list){

System.out.printf("输出数字:%1$s %n", num);

}

}

 

 

public static void dateList(List <? extends Date> list){

for(Date date: list){

System.out.printf("输出日期:%1$tF %1$tT%n", date);

}

}

 

 

}

 

分享到:
评论

相关推荐

    Java 范型Java 范型.doc

    Java 范型Java 范型

    Java 范型攻略篇

    ### Java范型攻略篇:深度解析与应用 #### 一、引言:Java范型的引入 在Java的发展历程中,范型(Generics)的引入标志着语言设计上的一个重要里程碑。自Java 1.5发布以来,范型成为了Java语言的重要特性之一,极...

    JAVA范型指南中文版

    Java 泛型是一种在编程中实现强类型检查和减少冗余类型转换的机制,它是在JDK 1.5版本中引入的。泛型的主要目标是提高代码的类型安全性、可读性和重用性,避免在运行时出现类型转换异常。 1. **泛型的基本概念** -...

    java范型[参考].pdf

    Java泛型是Java 5版本引入的一个重要特性,极大地增强了代码的类型安全性和效率。泛型允许我们在编写类、接口和方法时指定一种或多种类型参数,使得代码能够处理多种不同类型的对象,同时在编译时进行严格的类型检查...

    java范型[参照].pdf

    Java泛型是Java 5版本引入的一个重要特性,极大地增强了代码的类型安全性和可读性。泛型允许我们在编写代码时指定容器(如List、Set、Map等集合类)能够存储的数据类型,从而避免了不必要的类型转换,并在编译时期就...

    java 泛型类的类型识别示例

    在Java编程语言中,泛型(Generics)是一种强大的特性,它允许我们在编写代码时指定容器(如集合)可以存储的数据类型。这提高了代码的安全性和效率,因为编译器可以在编译时检查类型,避免了运行时...

    java范型视频

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    java范型学习

    Java 泛型是一种强大的语言特性,它在J2SE 5.0中引入,极大地提升了代码的类型安全性和效率。泛型允许我们在编写类、接口和方法时指定一种或多种类型参数,使得代码能够处理多种数据类型,同时避免了运行时的类型...

    一个很好的范型立例题

    Java范型是Java编程语言中的一个重要特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的重用性和安全性。范型在Java中引入的主要目标是增强类型安全,减少强制类型转换,并帮助开发者编写更清晰、更易于...

    Java 泛型(Generics)使用说明

    本例子说明演示了Java范型使用的动机、范型类的使用、范型方法的使用,以及范型的缺陷:类型擦除(type erasure).因为,现在Java的反射机制不能确定集合中的对象类型! 在实际应用中,如果能够灵活应用范型和反射...

    Java源码,可运行的实战SpringBoot服务源码(实战中总结测试)

    11、java范型测试 12、常用JUC类:CountDownloadLatch,CylicBarrier、ReetrantLock等测试案例 13、自定义封装的并发工具类:ConcurrentAction 14、自定义限流注解和其他工具注解 15、AQS队列学习总结和测试 16、CAS...

    Java程序设计范型和枚举PPT教案学习.pptx

    Java程序设计范型和枚举是Java编程中的关键概念,它们极大地增强了代码的类型安全性和重用性。本文将深入探讨这两个主题。 首先,我们来看什么是范型(Generics)。范型是Java SE 5.0引入的一个特性,它允许在类、...

    jdk5.0新特性实例讲解

    同时,JDK 5.0的文档和实例代码,如"java枚举学习.doc"和"java范型学习.doc",将提供宝贵的实践指导,帮助你更好地掌握这些内容。而"jdk5.0新特征.txt"则可能包含了对所有新特性的详细描述和使用示例,是深入学习的...

    用 Processing 进行数据可视化.docx

    尽管如此,Processing 仍然能够充分利用 Java 的性能,例如通过 Java 范型实现高效的代码翻译和执行。 Processing 开发环境(PDE)包括一个文本编辑器和结果窗口。用户在编辑器中编写代码,运行后,结果会在结果...

    用Java Socket实现一个简单的基于P2P范型的即时聊天系统。

    在本文中,我们将深入探讨如何使用Java的Socket编程来实现一个简单的基于P2P(Peer-to-Peer)范型的即时聊天系统。P2P网络架构允许每个节点既是客户端也是服务器,这种模式使得数据传输更加分散,提高了系统的可扩展...

    Java 实现泛型List

    Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。

    Java如何获取泛型类型

    参考:我眼中的Java-Type体系(1) 我眼中的Java-Type体系(2) 秒懂Java类型(Type)系统 Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现...

    范型参考 (1).java

    范型参考 (1).java

    范型参考 (2).java

    范型参考 (2).java

Global site tag (gtag.js) - Google Analytics