java枚举后⾯括号是什么意思_[Java]Java⾃定义枚举常量后括
号的作⽤
Java核⼼技术Ⅰ中提到了枚举类⾃定义分⽅法,在⽰例代码中,定义enum Size类代码如下
enum Size
{
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private Size(String abbreviation) { this.abbreviation = abbreviation;}
public String getAbbreviation() { return abbreviation;}
private String abbreviation;
}
这⾥出现了⼀个SMALL("S")的东西,SMALL是枚举类中的实例,但是括号是什么意思?
在查了⼀些博客后,翻到了java⾃⼰的Tutorials(教程),中间解释了括号的作⽤,下⾯把这部分内容贴出来。
……Java编程语⾔中的枚举类型要⽐其他语⾔中的同样类型强⼤的多。enum定义了⼀个称之为enum type的类。这个类中可以包含⽅法和其他域。在默认中,编译器会⾃动的为枚举类添加⼀些⽅法。例如,枚举类含有静态⽅法values来获取按声明顺序的,包含所有定义值的数组。这个⽅法常常与for-each结构同时使⽤,来遍历枚举类型的值。例如,这个代码从Planet类中遍历太阳系所有⾏星。
for (Planet p : Planet.values()) {
System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(mass));
}
在下⾯的⽰例中,Planet是代表太阳系中⾏星的枚举类型。这⾥它们的定义还包括恒定质量和半径。
每个枚举常量都⽤质量和半径参数来声明。当常量被创建时,这些值会传给构造器。Java要求这些常量必须定义在所有域和⽅法之前,具有最⾼优先级。并且,如果枚举类型中定义了其他的⽅法和域,这些常量声明的要以;结尾。
注:构造器必须是包私有或私有访问。
除了它的属性和构造函数之外,Planet还具有能够允许你取得每个星球的质量的表⾯重⼒的⽅法,这⾥有⼀段实例代码来计算你的体重。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);
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();
}
public static void main(String[] args) {
//Java主函数参数args中不包含程序名字,args[0]即为输⼊参数if (args.length != 1) {
border radius什么意思
}
double earthWeight = Double.parseDouble(args[0]);
double mass = earthWeight/EARTH.surfaceGravity();
for (Planet p : Planet.values())
System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(mass));
}
}
如果你运⾏这个Planet.class,获得输出
$ java Planet 175
Your weight on MERCURY is 66.107583
Your weight on VENUS is 158.374842
Your weight on EARTH is 175.000000
Your weight on MARS is 66.279007
Your weight on JUPITER is 442.847567
Your weight on SATURN is 186.552719
Your weight on URANUS is 158.397260
Your weight on NEPTUNE is 199.207413
可以看到,Java中枚举类中声明常量时可以添加任意个参数,⽽这些参数是通过括号形式跟在常量后⾯。这些声明的参数可以作为枚举常量额外的属性使⽤,但是⼀定要在后⾯添加相应类型的变量来接受这些参数,并且,构造器中输⼊参数也要与声明中的参数匹配。
总结:
⾃定义枚举类中的括号是⽤来添加常量额外的参数
枚举类中要添加参数对应的域(变量)
构造器中输⼊的参数要与声明的顺序、数量匹配
枚举类中域声明为private final,保证安全

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。