java enum 举例

来源:互联网 发布:桂正和m知乎 编辑:程序博客网 时间:2024/06/09 13:39

1、定义一个enum

public enum Grade { A, B, C, D, F, INCOMPLETE };

2、使用一个enum

private Grade grade;

public void assignGrade(Grade grade) {
           this.grade = grade;
         }

         public Grade getGrade() {
           return grade;
         }

public void testGradeAssignment(PrintStream out) throws IOException {
          student1.assignGrade(Grade.B);
          student2.assignGrade(Grade.INCOMPLETE);
          student3.assignGrade(Grade.A);
        }

3、类内声明Enum

public class Downloader {

       public enum DownloadStatus { INITIALIZING, IN_PROGRESS, COMPLETE };

       // Class body

}

PS.Enum默认是static的,就像interface默认是abstract的一样。

4、遍历Enum

重要是values()这个方法,它返回该类型所有可能取值的集合。

public void listGradeValues(PrintStream out) throws IOException {
        Grade[] gradeValues = Grade.values();

        // for loop
        for (int i=0; i<gradeValues.length; i++) {
          out.println("Allowed value: '" + gradeValues[i] + "'");
        }

        // for/in loop
        for (Grade g : gradeValues ) {
          out.println("Allowed value: '" + g + "'");
        }
      }

5、Enum对switch的支持

public void testSwitchStatement(PrintStream out) throws IOException {
       StringBuffer outputText = new StringBuffer(student1.getFullName());

       switch (student1.getGrade()) {
         case A: 
           outputText.append(" excelled with a grade of A");
           break;   
         case B: // fall through to C
         case C: 
           outputText.append(" passed with a grade of ")
                     .append(student1.getGrade().toString());
           break;
         case D: // fall through to F
         case F:
           outputText.append(" failed with a grade of ")
                     .append(student1.getGrade().toString());
           break;
         case INCOMPLETE:
           outputText.append(" did not complete the class.");
           break;
         default:
           outputText.append(" has a grade of ")
                     .append(student1.getGrade().toString());
           break;
       }

6、EnumMap的使用

public enum AntStatus {
    INITIALIZING,
    COMPILING,
    COPYING,
    JARRING,
    ZIPPING,
    DONE,
    ERROR
}

public class AntStatusTester {

    public AntStatusTester() { }

    public void testEnumMap(PrintStream out) throws IOException {
      // Create a map with the key and a String message
      EnumMap<AntStatus, String> antMessages =
        new EnumMap<AntStatus, String>(AntStatus.class);

      // Initialize the map
      antMessages.put(AntStatus.INITIALIZING, "Initializing Ant...");
      antMessages.put(AntStatus.COMPILING,      "Compiling Java classes...");
      antMessages.put(AntStatus.COPYING,        "Copying files...");
      antMessages.put(AntStatus.JARRING,        "JARring up files...");
      antMessages.put(AntStatus.ZIPPING,        "ZIPping up files...");
      antMessages.put(AntStatus.DONE,           "Build complete.");
      antMessages.put(AntStatus.ERROR,          "Error occurred.");

      // Iterate and print messages
      for (AntStatus status : AntStatus.values() ) {
        out.println("For status " + status + ", message is: " +
                    antMessages.get(status));
      }
    }

    public static void main(String[] args) {
      try {
        AntStatusTester tester = new AntStatusTester();

        tester.testEnumMap(System.out);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
}

7、Enum中添加method

public enum xxx{

xxx(){

}//构造函数

public int getXxx(){

}//接口

}



例一:

[java] view plain copy
  1. package com.test4;  
  2.   
  3. public enum Day {  
  4.     SUNDAY, MONDAY, TUESDAY, WEDNESDAY,   
  5.     THURSDAY, FRIDAY, SATURDAY   
  6. }  

[java] view plain copy
  1. package com.test4;  
  2.   
  3. public class EnumTest {  
  4.     Day day;  
  5.   
  6.     public EnumTest(Day day) {  
  7.         this.day = day;  
  8.     }  
  9.   
  10.     public void tellItLikeItIs() {  
  11.         switch (day) {  
  12.         case MONDAY:  
  13.             System.out.println("Mondays are bad.");  
  14.             break;  
  15.   
  16.         case FRIDAY:  
  17.             System.out.println("Fridays are better.");  
  18.             break;  
  19.   
  20.         case SATURDAY:  
  21.         case SUNDAY:  
  22.             System.out.println("Weekends are best.");  
  23.             break;  
  24.   
  25.         default:  
  26.             System.out.println("Midweek days are so-so.");  
  27.             break;  
  28.         }  
  29.     }  
  30.   
  31.     public static void main(String[] args) {  
  32.         EnumTest firstDay = new EnumTest(Day.MONDAY);  
  33.         firstDay.tellItLikeItIs();  
  34.         EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);  
  35.         thirdDay.tellItLikeItIs();  
  36.         EnumTest fifthDay = new EnumTest(Day.FRIDAY);  
  37.         fifthDay.tellItLikeItIs();  
  38.         EnumTest sixthDay = new EnumTest(Day.SATURDAY);  
  39.         sixthDay.tellItLikeItIs();  
  40.         EnumTest seventhDay = new EnumTest(Day.SUNDAY);  
  41.         seventhDay.tellItLikeItIs();  
  42.   
  43.     }  
  44. }  

结果:

Mondays are bad.
Midweek days are so-so.
Fridays are better.
Weekends are best.
Weekends are best.
0 0
原创粉丝点击