Java中范型的作用

简介: 在JDK1.5之后引入了 范型的概念,到底什么事范型的,在一段时间内 我也是很模糊 。。。。 下面我用一个 ArrayList 来演示范型的作用  。 我们知道ArrayList 可以看做是一个线性表  ,  我们在为进行范型规范化的时候,这个线性表中可以存储的原始类型  可以是各种各样的类型 ,这就说明一个表中 存储了不同类型的数据 。

在JDK1.5之后引入了 范型的概念,到底什么事范型的,在一段时间内 我也是很模糊 。。。。

下面我用一个 ArrayList 来演示范型的作用  。

我们知道ArrayList 可以看做是一个线性表  ,  我们在为进行范型规范化的时候,这个线性表中可以存储的原始类型  可以是各种各样的类型 ,这就说明一个表中 存储了不同类型的数据 。  这样做很不安全,而且容易出错 。

看下面一段代码,JAVA5以前 的版本

ArrayLsit  col=new ArrayList()  ;

col.add(1) ;

col.add("string") ;

col.add(false)  ;

......

看到上面一个ArrayList中存储各种各样的 类型的元素  

JDK1.5进行范型规范后Generic

ArrayList <Integer>   col=new ArrayList()  ;

col.add(1)   ;//可以

 col.add("string") ; //会报错,因为进行了范型规范之后 这个线性表中只能存储 Integer类型的数据   ,

这样做就很好的保证了集合类型的唯一性、。。。。。

 

 

以上只是范型的简单应用,范型在反射中也应用到了  。看下面一段代码 

  Constructor  con=String.class.getConstructor(StringBuffer.class) ; 
  String str=(String) con.newInstance(new StringBuffer("xiaowei"));      //注意 这里我们对于String的构造方法映射类 创建的对象需要强制转换
  System.out.println(str);

 

但是进行了范型规范之后就不需要了 ,这就是范型的作用 。

Constructor<String>  con=String.class.getConstructor(StringBuffer.class) ; 
  String str=con.newInstance(new StringBuffer("xiaowei"));
  System.out.println(str);  

 

 范型是给编译器看的,在编译字节码文件之后 就会去类型化  

 

 

 

 

 

 

 

 

 

 

目录
相关文章
|
3月前
|
存储 Java
最新Java基础系列课程--Day11-范型与集合(三)
最新Java基础系列课程--Day11-范型与集合
|
3月前
|
存储 Java 索引
最新Java基础系列课程--Day11-范型与集合(二)
最新Java基础系列课程--Day11-范型与集合
|
3月前
|
Java API
最新Java基础系列课程--Day11-范型与集合(一)
最新Java基础系列课程--Day11-范型与集合
|
4月前
|
存储 Java API
最新Java基础系列课程--Day11-范型与集合
最新Java基础系列课程--Day11-范型与集合
|
Java
JAVA继承范型
JAVA继承范型
39 0
|
算法 安全 Java
Java 范型基础
泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。
148 0
|
Java 编译器
Java范型深入理解,利用反射穿透编译器忽略范型
Java中的范型的作用阶段是在 编译时,也就是说范型是给编译器看的    。 我们经常看到  类 ArrayList      后面的  就是类型化参数,说明这个 ArrayList支持  范型化   。
702 0
java--迭代范型化 HashMap
java.util.HashMap 类型参数: K - 此映射所维护的键的类型 V - 所映射值的类型  由于HashMap没有实现iterable 接口所以我们不能直接用 迭代for循环 来 迭代 HashMap  。
669 0
|
Java
Java利用反射来获取一个方法的 范型化参数 Vector&lt;Integer&gt;的类型
假设有如下类 class   A {      public  void   show(Vector v)  {} }   在我们不知道Vector中数据的类型的时候 这时候我们只知道这个方法的名字  和参数的个数 ,我们来获取 范型化的实际类型 。
815 0
|
3天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
22 0