|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看net网页编程Beans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。
1.先容
2.界说复杂Java泛型
实在Java的泛型就是创立一个用范例作为参数的类。就象我们写类的办法一样,办法是如许的method(Stringstr1,Stringstr2),办法中参数str1、str2的值是可变的。而泛型也是一样的,如许写classJava_Generics<K,V>,这里边的K和V就象办法中的参数str1和str2,也是可变。上面看看例子:
importjava.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");
System.out.println(s);
}
}
准确输入:value
这只是个例子,不外看看是否是创立一个用范例作为参数的类,参数是K,V,传进的“值”是String范例。这个类他没有特定的待处置型别,之前我们界说好了一个类,在输出参数有所流动,是甚么型其余有请求,可是如今编写程序,完整能够不制订参数的范例,详细用的时分来断定,增添了程序的通用性,像是一个模板。
3.泛型通配符
起首,上面是一个例子,感化是打印出一个汇合中的一切元素,我们起首用老版本jdk1.4的编码划定规矩,代码以下:
voidprintColleciton(Collectionc){
iteratori=c.iterator();
for(k=0;k<c.size();k++){
System.out.pritnln(i.next();
}
然后,我们用jdk5.0泛型来重写下面这段代码(轮回的语法是新版本的语法):
voidprintCollection(Colleciton<Object>c){
for(Objecte:c){
System.out.print(e);
}
}
这个新版本其实不比老版本的很多多少少,老版本能够用恣意一种汇合范例作为参数来挪用,而新版本仅仅持有Collection<Object>范例,Colleciton<Object>并非恣意范例的Collection的超类。
那末甚么是一切Colleciton范例的超范例呢?它是Collection<?>如许一个范例,读作“未知Colleciton”。它的意义是说Colleciton的元素范例能够婚配恣意范例,我们把它称作通配符范例,我们如许写:
voidprintCollection(Colleciton<?>c){
for(Objecte:c){
System.out.println(e);
}
}
如今我们用恣意范例的汇合来挪用它了,必要注重的是外部办法printColleciton(),我们任能够从c中来读出元素,而且这些元素是Object范例,并且是平安的,由于不管汇合中是甚么范例,它总包含Object,可是将恣意对象加到汇合中是不平安的:
Colleciton<?>c=newArrayList<String>();
c.add(newObject());//编译时毛病
因为我们不晓得c持有的是甚么范例的元素,我们不克不及加object到汇合中往。add()办法用范例E作为参数,(汇合的元素范例)认真正的参数范例是?的时分,它代表的是一些未知范例。任何传送给add()办法的参数必需是这个未知范例的子范例。因为我们不晓得未知范例,以是我们传送给它任何工具。次要的破例是null,它是每个范例的成员。
<p>另外一方面,假定给一个List<?>,我们挪用get()而且充实使用了局。了局范例是未知范例。可是我老是晓得它是一个Object,因而分派一个从get()掏出来的了局到一个object的变量是平安的,大概作为一个参数传送到一个必要object范例的中央。
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,net网页编程Beans等等,但是我认为如果java想超越.net网页编程,那么他首先要解决的就是IDE工具的整合。 |
|