主题:【评论】Sun发布了最新的Java版本-- 5.0 Tiger版 -- Highway
到目前为止,还不知道将来是Java 1.5还是JDK 5.0,因为网页上写的是JDK 5.0,而下载的软件里面却是Java 1.5,实在是有趣,这里还是统称为Java 1.5算了,管它以后叫什么。
我刚才试验了一下,Java 1.5里面的枚举是用类实现的,可以有自己的构造函数以及set/get函数,这意味着它也有类的开销。
实在是不明白为什么Sun不能够提供一种轻量级的类变种?因为对于枚举这样的简单类型来说,完整的类开销是不必要的,虽然用类来实现枚举是很简单的事情。
今天我下载了Eclipse 3.0 Build 20040715,发现它开始支持JDK 5.0了。但是目前的版本虽然支持了Generic Programming,却不支持Boxing/Unboxing。也就是说,虽然你可以用Javac正常编译使用了Boxing/Unboxing特性的源程序,但是该源程序在Eclipse 3.0 Build 20040715环境中却会被报告错误。
下面是我曾经列表过的三个源程序在Eclipse 3.0 Build 20040715环境中能够通过的对应版本,有心者可以对比一下:
第一个源程序:
package myPackage;
import java.util.*;
public class Freq
{
public static void main(String[] args) {
Map<String, Integer> m = new TreeMap<String, Integer>();
for (String word : args) {
Integer freq = m.get(word);
m.put(word, new Integer((freq == null ? 1 : freq.intValue() + 1)));
}
System.out.println(m);
}
}
第二个源程序:
package myPackage;
import java.util.*;
public class MyClass {
public void test()
{
ArrayList<String> al=new ArrayList<String>();
al.add("111");
al.add("222");
System.out.println(al.get(al.size()-1));
System.out.println(al.get(al.size()-2));
ArrayList<Integer> al2=new ArrayList<Integer>();
al2.add(new Integer(111));
al2.add(new Integer(222));
System.out.println(al2.get(al2.size()-1));
System.out.println(al2.get(al2.size()-2));
}
public static void main(String[] args) {
MyClass mc=new MyClass();
mc.test();
}
}
第三个源程序:
package myPackage;
class BasicGeneric <A>
{
private A data;
public BasicGeneric(A data)
{
this.data = data;
}
public A getData()
{
return data;
}
}
public class MyClass2 {
public String test01(String input) {
String data01 = input;
BasicGeneric<String> basicGeneric = new BasicGeneric<String>(data01);
String data02 = basicGeneric.getData(); return data02;
}
public int test02(int input) {
Integer data01 = new Integer(input);
BasicGeneric <Integer> basicGeneric = new BasicGeneric<Integer>(data01);
Integer data02 = basicGeneric.getData();
return data02.intValue();
}
public static void main(String [] args) {
MyClass2 sample = new MyClass2();
System.out.println(sample.test01("This generic data"));
System.out.println(sample.test02(12));
}
}
本帖一共被 1 帖 引用 (帖内工具实现)