码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA泛型深入

时间:2015-06-08 19:46:21      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:java泛型深入

JAVA泛型深入

   1) 泛型(类型)的擦除:java的泛型只在编译时有效,运行时是不带有泛型信息的(class文件中不带有泛型信息)。

    例如:写了一个测试程序,然后用反编译软件查看Class文件。

//java文件

package generacdemo;

import java.util.ArrayList;

import java.util.List;


public class Genertest {

    public static void main(String[] args) {

List<String> list=new ArrayList<String>();//带泛型

List<Integer> list1=new ArrayList<Integer>();//带泛型

list.add("java");

list1.add(300);

//获取泛型对象的Class对象

        String a=list.getClass().getName();

String b=list1.getClass().getName();

System.out.println(a+"\t"+b);

}

}

//class文件

技术分享 

通过对比可以得知,在编译成class文件时,是不带有泛型信息的。


  添加泛型类型的类的Class对象是否为同一个,通过输出2个泛型对象的Class对象,输出如下:

  java.util.ArrayList java.util.ArrayList 

  可以看出2个泛型对象的Class对象为同一个,也就是说运行时是没有泛型的。

  2)泛型子类

  List<Object> list1;

  List<String> list2;

  list1=list2;//编译错误

  list1与list2是2个不同的泛型类,编译时不会通过的。

 3)反射获得泛型

 参考资料:http://www.blogjava.net/fancydeepin/archive/2012/08/25/386241.html

JAVA泛型深入

标签:java泛型深入

原文地址:http://20150523.blog.51cto.com/10261028/1659783

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!