今天看张老师的枚举这节视频,枚举的主要作用就是在编译的时候可以强制赋值类型的范围。比如
public enum Color {
RED,GREEN,BLUE;
private Color(){}
}
public class Demo(){
Color c = Color.RED;
}
这里就强行规定Color的值类型必须是Color这个枚举类里面定义的属性之一。
那么用静态常量属性也可以搞定
public class Color(){
private static final String COLOR_RED="red";
}
public class Demo(){
String color = Color.COLOR_RED;
}
就代码上面看,两者的区别在于用枚举的话把所有类型单独封装成了一个类(COLOR)
而用静态常量属性的看,他并没有把类型封装成一个类,他只是把要返回的具体数值封装到了一个静态常量类里面。
但这两者都可以达到对赋值的范围控制。
所以我想请教的就是除了上面的代码形式不一样外,他们到底还有什么区别,他们的优劣势在什么地方。
|