终于碰到了java泛型

早知道Java5.0之后就增加了泛型。而我现在主要看的入门书籍一直接触的是4.0的。比如清华大学出版社的《Java程序设计》第二版(谭浩强主编,马素霞等编著的),还有孙鑫的教学视频,已经侯捷翻译的《Java编程思想》,貌似这些书都是5.0之前的,所以学的过程不知道有泛型,后来只是断断续续知道有泛型的说法,不过一直没有认真去看.今天编程终于出现了。

在定义一个Arraylist 类型的时候,编译后出现了这样的错误:

Note:checkUser.java uses unchecked or unsafe operations.
Note:Recompile with -Xlint :unchecked for details.
 

百度一下,得到解释:

如果显示为中文就是:

     注意: a.java 使用了未经检查或不安全的操作。

     注意: 要了解详细信息,请使用 -Xlint:unchecked 重新编译。

  其实是很简单,是因为用到了JAVA5.0的泛型,而5.0的泛型不做类型检查,例如ArrayList a =new ArrayList();

a.add("hello");这样会出现警告,解决方法有以下几种:

  1)在方法的前面加上@SuppressWarnings("unchecked")

  2)声明泛型类型,例如ArrayList<Object> a=new ArrayList<Object>();

  3)使用1.4兼容JDK来编译,javac -source 1.4 Test.java

  4)也可以查看警告信息,javac Xlint:unchecked Test.java。这样会显示详细的警告信息

时间: 2024-09-27 02:18:03

终于碰到了java泛型的相关文章

java泛型type体系整理

一直对jdk的ref使用比较模糊,早上花了点时间简单的整理了下,也帮助自己理解一下泛型的一些处理.   java中class,method,field的继承体系     java中所有对象的类型定义类Type   说明:    Type :  Type is the common superinterface for all types in the Java programming language. These include raw types, parameterized types, 

Eclipse V3.1中的Java泛型支持

Java 中的泛型 几乎从第一个版本开始,Java 技术的创立者们就已经开始讨论对该语言添加 泛型支持.C++ 通过标准模板库对泛型进行支持,但是由于缺少所有其他类(嵌 入在 Java 语言中的Object 类中)的一个统一父类,泛型的实现也受到阻碍.Java编程语言的泛型支持是其历史上最重大的语法变化.由于某些显而易见的原因,工具支持比其他 SDK 升级的步法要慢得多.尽管如此,现在 Eclipse V3.1 已经对这些语言的新特性有了出色的支持.本文重点介绍其中的一些新特 性. Java 5

通过Java泛型实现数组排序和搜索的通用方法

下面讨论的是数组的排序和搜索功能,而一个通用方法则是实现Comparable接口的方法,这个方法需要通过java泛型来实现.下面便逐步讲解为何,以及如何通过Java泛型实现此类的通用方法. 如何在java类中一些通用方法,特别是一些静态的工具方法? 比如,数组Arrays的sort.search等? 1. 整数数组的顺序收缩 public static int seqSearch(int[] arr, int first, int last, int target) { for (int i =

编程题-面试中碰到的java基础题

问题描述 面试中碰到的java基础题 今天面试碰到这么一个问题,想了半天,不知如何回答 P1=V1; P2=V2; method(P1,P2){ P1=V3; P2=V4; } 结果是P1=V1;P2=V4;问P1P2是什么类型的时候才会出现这种情况 解决方案 在传递的时候,如果传递的是原生数据类型,则值不会改变 public class Test { public static void main(String[] args) { int a = 1; int b = 2; swap(a,b)

java泛型异常,如何解决

问题描述 java泛型异常,如何解决 public static > AnyType[] mergesort(AnyType[] a,AnyType[] b) { int i=0; int j=0; int index=0; AnyType[] tmp=(AnyType[]) new Comparable[a.length+b.length]; while(i<a.length&&j<b.length){ if(a[i].compareTo(b[j])<0) { t

java泛型-Java泛型上下限super和extendS的使用区别,谢谢

问题描述 Java泛型上下限super和extendS的使用区别,谢谢 class DemoF{ public static void printA(Collection<?super Cat> c){ 相同的方法体,例如打印集合} public static void printB(Collection<?extend Animal> c){相同的方法体,例如打印集合} public static void main(String[ ] args){ Collection<

java参数-java泛型当中String 和Object之间是什么关系

问题描述 java泛型当中String 和Object之间是什么关系 Map里面的参数可以反过来写吗 写成Map 解决方案 挺不错嘛,元旦还怎么刻苦,当然是可以的,你想要明白Map值怎么用的,反过来写意思就不一样了. Map<String,Object> 表示 name是String 类型,Object是value的类型 Map<Object,String> 表示 name是Object 类型,String是value的类型 你可以参考这个:http://blog.csdn.net

问一个Java泛型与类继承的问题

问题描述 问一个Java泛型与类继承的问题 直接上代码了 //DeviceRepository类 public abstract class DeviceRepository<T extends Device> extends DomainRepository<T> //DeviceEventHandler类第一种写法 public abstract class DeviceEventHandler<M extends Device,R extends DeviceRepos

java 泛型-关于Java泛型推断,希望大牛不吝赐教

问题描述 关于Java泛型推断,希望大牛不吝赐教 请教大牛一个问题,希望不吝赐教,关于泛型的推断:当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用了,如果调用方法时这多处的实际应用类型对应到了不同的类型,且没有使用返回值,这时候取多个参数中的最大交集类型 例:下面语句实际对应的类型就是Number了,编译没问题,只是运行时出问题. public static void test(T[] array, T b) { for (int i = 0; i < array.length;