星期一, 一月 17, 2005

J2SE 5.0 New Features.

J2SE 5.0新操作符含义
1. Generics(泛型)
,读做:” of Type”,比如Collection c读做”Collectioin of String c
2. for-loop:
Colon( : ) 冒号,读做: for each typeObject t in c.”
比如:
for (TimerTask t : c) 读做: for each TimerTask t in c
3. varargs(变元),声明参数个数不确定的方法或接口.
三个点(…);
public static String format(String pattern,Object... arguments);
public static String format(String pattern,Object... arguments)
{
String temp="";
for(Object t:arguments)temp+=t;
return pattern+":"+temp;
}
4. enum 枚举声明
简单enum:
enum Season { WINTER, SPRING, SUMMER, FALL }
Examples:
//Test for enum simple
for (Season rank : Season.values())System.out.println("Enum:"+rank);
复杂enum:
可以包含数据,行为
public enum Planet {
MERCURY (3.303e+23, 2.4397e6),
VENUS (4.869e+24, 6.0518e6),
EARTH (5.976e+24, 6.37814e6),
MARS (6.421e+23, 3.3972e6),
JUPITER (1.9e+27, 7.1492e7),
SATURN (5.688e+26, 6.0268e7),
URANUS (8.686e+25, 2.5559e7),
NEPTUNE (1.024e+26, 2.4746e7),
PLUTO (1.27e+22, 1.137e6);

private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
private double mass() { return mass; }
private double radius() { return radius; }

// universal gravitational constant (m3 kg-1 s-2)
public static final double G = 6.67300E-11;

double surfaceGravity() {
return G * mass / (radius * radius);
}
double surfaceWeight(double otherMass) {
return otherMass * surfaceGravity();
}
}
Example:
//Test for complex enum Planet
for (Planet p : Planet.values())
System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(8));

5. 注解(Annotations)
目的:很多API要求提供一些模板代码,以供方便使用.