首页 | 路由技术 | 交换技术 | 接入技术 | 综 合布线 | 网络管理 | 网络安全 | 操作系统 | 实用技巧 | 业界动态
最 新咨询 | 网络编程 | 软件编程 | 脚本技术 | 网页制作 | 网站技巧 | 数据库  | 精品收藏 | 免费资源 | 在线书店
当前位置: 首页 >天空618-IT技术 >网络编程 >Javascript >正文
关键字: 模糊搜索:

Java泛型编程快速入门

发布时间:08-08-13 09:30:20      来源:天空618-IT技术     作者:admin
最新报道

JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0。这说明 Java已经有大幅度的变化。本文将讲解JDK5.0支持的新功能-----Java的泛型.
1Java泛型
其实Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样的method(String str1,String str2 ),方法中参数str1str2的值是可变的。而泛型也是一样的,这样写class Java_GenericsK,V>,这里边的KV就象方法中的参数str1str2,也是可变。下面看看例子:
//code list 1
import Java.util.Hashtable;
class TestGen0K,V{
 public HashtableK,V h=new HashtableK,V();
 public void put(K k, V v) {
   h.put(k,v);
 }
 public V get(K k) {
   return h.get(k);
 }
 public static void main(String args[]){
   TestGen0String,String t=new TestGen0String,String();
   t.put("key", "value");
   String s=t.get("key");
   System.out.println(s);
 }
}
正确输出:value
这只是个例子(Java中集合框架都泛型化了,这里费了2遍事.),不过看看是不是创建一个用类型作为参数的类,参数是KV,传入的“值”是String类型。这个类他没有特定的待处理型别,以前我们定义好了一个类,在输入输入参数有所固定,是什么型别的有要求,但是现在编写程序,完全可以不制定参数的类型,具体用的时候来确定,增加了程序的通用性,像是一个模板。
呵呵,类似C++的模板(类似)。
1.1. 泛型通配符
下面我们先看看这些程序:
//Code list 2
void TestGen0Medthod1(List l) {
 for (Object o : l)
   System.out.println(o);
}
看看这个方法有没有异议,这个方法会通过编译的,假如你传入String,就是这样ListString>。
接着我们调用它,问题就出现了,我们将一个ListString>当作List传给了方法,JVM会给我们一个警告,说这个破坏了类型安全,因为从List中返回的都是Object类型的,而让我们再看看下面的方法。
//Code list 3
void TestGen0Medthod1(ListString l) {
 for (Object o : l)
   System.out.println(o);
}
因为这里的ListString>不是ListObject>的子类,不是StringObject的关系,就是说ListString>不隶属于listObject,他们不是继承关系,所以是不行的,这里的extends是表示限制的。
类型通配符是很神奇的,List?>这个你能为他做什么呢?怎么都是“?”,它似乎不确定,他总不能返回一个?作为类型的数据吧,是啊他是不会返回一个“?”来问程序员的?JVM会做简单的思考的,看看代码吧,更直观些。
//code list 4
ListString l1 = new ArrayListString();
li.add(“String”);
List? l2 = l1;
System.out.println(l1.get(0));
这段代码没问题的,l1.get(0)将返回一个Object
  1.2. 编写泛型类要注意:
1) 在定义一个泛型类的时候,在<>”之间定义形式类型参数,例如:“class TestGenK,V>”,其中“K” , “V”不代表值,而是表示类型。
2) 实例化泛型对象的时候,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。例如:
TestGenString,String t=new TestGenString,String()
3) 泛型中<K extends Object,extends并不代表继承,它是类型范围限制。
2、泛型与数据类型转换
2.1. 消除类型转换
上面的例子大家看到什么了,数据类型转换的代码不见了。在以前我们经常要书写以下代码,如:
//code list 5
import Java.util.Hashtable;

9 7 3 1 2 3 4 8 :


·上一篇文章:
·下一篇文章:
[ 返回上一页 ]字体[  ] [ 打印 ] [ 发送好友:发送给好友 ][ 加入收藏:加入收藏夹 ]
 
发表评论 ?
  相关文章
相关文章

无相关新闻

最新文章
· Java泛型编程快速入门
· Java程序员:一刻钟精通正则表达
· Java程序员的学习目标:破坏源程
· Java程序员的迷失—论“虚拟机”
· 杀毒软件市场怪现象之 误杀、暗杀
· 解决系统疑难杂症 用户必备工具S
· 实战:三顾茅庐 用DD-WRT突破网络
· 北京2008年奥运会直播
· sem,seo ,ppc 是什么意思
· checkbox实现全选的多种方法
· javascript 输入框提示列表效果
· Div Select挡住
· div层跨越iframe帧显示在上面
· asp读取xml文件
· 错误类型:Provider (0x80004005
· asp截取字符串的两种应用
· 通过脚本调用迅雷自动下载 迅雷A
· 数字奥运引发建站热 主机市场供求
· 开个外贸网站--选择天下数据
· BBS网站在奥运期间将封闭