1.枚举
import org.junit.Test;
//枚举
public class Demo1 {
@Test
public void testGrade(){
print(Grade.C);
print(Grade.D);
}
public void print(Grade g){
String value = g.getValue();
System.out.println(value);
}
}
/*class Grade{
public Grade() {
}
public static final Grade A = new Grade();
public static final Grade B = new Grade();
public static final Grade C = new Grade();
public static final Grade D = new Grade();
public static final Grade E = new Grade();
}*/
//如何定义枚举的构造函数、方法和字段去封装更多的信息
enum Grade{ //类
A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");//对象
private String value;
private Grade(String newValue){
value = newValue;
}
public String getValue(){
return value;
}
}
带抽象方法的枚举
import org.junit.Test; import org.junit.experimental.theories.suppliers.TestedOn; //枚举 public class Demo1 { @Test public void test1() { print(Grade.C); print(Grade.D); } public void print(Grade g) { String value = g.localValue(); System.out.println(value); } //测试枚举的常用方法 @Test public void test2(){ System.out.println(Grade.D.name()); System.out.println(Grade.D.ordinal()); String str = "B"; Grade g = Grade.valueOf(str); System.out.println(g); Grade[] gra = Grade.values(); for(Grade g1:gra){ System.out.println(g1); } } } /* * class Grade{ public Grade() { } public static final Grade A = new Grade(); * public static final Grade B = new Grade(); public static final Grade C = new * Grade(); public static final Grade D = new Grade(); public static final Grade * E = new Grade(); } */ // 带抽象方法的枚举 enum Grade { // 类 A("100-90") { @Override public String localValue() { return "优"; } }, B("89-80") { @Override public String localValue() { return "良"; } }, C("79-70") { @Override public String localValue() { return "一般"; } }, D("69-60") { @Override public String localValue() { return "差"; } }, E("59-0") { @Override public String localValue() { return "不及格"; } };// 对象 private String value; private Grade(String newValue) { value = newValue; } public String getValue() { return value; } public abstract String localValue(); } //用单态设计模式定义出一个类/ enum A{ A; }