枚举

问题:对象的某个属性的值不能是任意的,必须为固定的一组取值其中的某一个

解决办法:

1) 在setGrade方法中做判断,不符合格式要求就抛出异常

2) 直接限定用户的选择,通过自定义类模拟枚举的方式来限定用户的输入

写一个Grade类,私有构造函数,对外提供5个静态的常量表示类的实例

3) jdk5中新定义了枚举类型,专门用于解决此类问题

4) 枚举就是一个特殊的java类,可以定义属性、方法、构造函数、实现接口、继承类

//枚举类就是一个java类,也可以声明属性,方法,构造函数

public enum Grade4 {

A("90-100"),B("80-89"),C("70-79"),D("60-69"),E("0-59");

 

private String value;

private Grade4(String value) {

this.value = value;

}

 

public String getValue() {

return value;

}

}

 

//枚举类就是一个java类, 也可以继承抽象和实现接口

public enum Grade5 {

// 抽象类不能创建实例对象

A("90-100"){

// new了一个Grade5的子类实例

public String toLocaleString() {

return "优";

}

}

,B("80-89"){

// new了一个Grade5的子类实例

public String toLocaleString() {

return "良";

}

}

,C("70-79"){

// new了一个Grade5的子类实例

public String toLocaleString() {

return "中";

}

}

,D("60-69"){

// new了一个Grade5的子类实例

public String toLocaleString() {

return "差";

}

}

,E("0-59"){

// new了一个Grade5的子类实例

public String toLocaleString() {

return "不及格";

}

};

 

private String value;

private Grade5(String value) {

this.value = value;

}

 

public String getValue() {

return value;

}

 

// 对外提供一个方法,返回枚举的本地信息

// 一个方法不知道如何实现,可以定义为抽象的

public abstract String toLocaleString();

 

}

原文地址:https://www.cnblogs.com/qq809306794/p/3183194.html