Java泛型编程快速入门

Java泛型编程快速入门

ID:41033242

大小:29.50 KB

页数:7页

时间:2019-08-14

Java泛型编程快速入门_第1页
Java泛型编程快速入门_第2页
Java泛型编程快速入门_第3页
Java泛型编程快速入门_第4页
Java泛型编程快速入门_第5页
资源描述:

《Java泛型编程快速入门》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java泛型编程快速入门JDK1.5令我们期待很久,可是当他发布的时候却更换版本号为5.0。这说明Java已经有大幅度的变化。本文将讲解JDK5.0支持的新功能-----Java的泛型.1、Java泛型其实Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样的method(Stringstr1,Stringstr2),方法中参数str1、str2的值是可变的。而泛型也是一样的,这样写classJava_Generics<K,V>,这里边的K和V就象方法中的参数str1和str2,也是可变。下面看看例子://codelist1imp

2、ortJava.util.Hashtable;classTestGen0<K,V>{ publicHashtable<K,V>h=newHashtable<K,V>(); publicvoidput(Kk,Vv){h.put(k,v); } publicVget(Kk){returnh.get(k); } publicstaticvoidmain(Stringargs[]){TestGen0<String,String>t=newTestGen0<String,String>();t.put("key","value");Strings=t.get("key

3、");System.out.println(s); }}正确输出:value这只是个例子(Java中集合框架都泛型化了,这里费了2遍事.),不过看看是不是创建一个用类型作为参数的类,参数是K,V,传入的“值”是String类型。这个类他没有特定的待处理型别,以前我们定义好了一个类,在输入输入参数有所固定,是什么型别的有要求,但是现在编写程序,完全可以不制定参数的类型,具体用的时候来确定,增加了程序的通用性,像是一个模板。呵呵,类似C++的模板(类似)。1.1.泛型通配符下面我们先看看这些程序://Codelist2voidTestGen0Medthod1(L

4、istl){ for(Objecto:l)System.out.println(o);}看看这个方法有没有异议,这个方法会通过编译的,假如你传入String,就是这样List<String>。接着我们调用它,问题就出现了,我们将一个List<String>当作List传给了方法,JVM会给我们一个警告,说这个破坏了类型安全,因为从List中返回的都是Object类型的,而让我们再看看下面的方法。//Codelist3voidTestGen0Medthod1(List<String>l){ for(Objecto:l)System.out.println(o)

5、;}因为这里的List<String>不是List<Object>的子类,不是String与Object的关系,就是说List<String>不隶属于list<Object>,他们不是继承关系,所以是不行的,这里的extends是表示限制的。类型通配符是很神奇的,List<?>这个你能为他做什么呢?怎么都是“?”,它似乎不确定,他总不能返回一个?作为类型的数据吧,是啊他是不会返回一个“?”来问程序员的?JVM会做简单的思考的,看看代码吧,更直观些。//codelist4List<String>l1=newArrayList<String>();li.add(

6、“String”);List<?>l2=l1;System.out.println(l1.get(0));这段代码没问题的,l1.get(0)将返回一个Object。  1.2.编写泛型类要注意:1)在定义一个泛型类的时候,在“<>”之间定义形式类型参数,例如:“classTestGen<K,V>”,其中“K”,“V”不代表值,而是表示类型。2)实例化泛型对象的时候,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。例如:TestGen<String,String>t=newTestGen<String,String>();3)泛型中<Kexten

7、dsObject>,extends并不代表继承,它是类型范围限制。2、泛型与数据类型转换2.1.消除类型转换上面的例子大家看到什么了,数据类型转换的代码不见了。在以前我们经常要书写以下代码,如://codelist5importJava.util.Hashtable;classTest{ publicstaticvoidmain(String[]args){Hashtableh=newHashtable();h.put("key","value");Strings=(String)h.get("key");System.out.println(s); }}这

8、个我们做了类型转换,是不是感觉很烦的,并且强制类型转

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。