2011-09-14 24 views
17

Trong một lớp, tôi cần xác định các hành động khác nhau được chuyển vào một phương thức. Bây giờ, tất cả các trường hợp có thể chia sẻ một cách an toàn những hành động này, vì vậy tôi nghĩ rằng tôi có thể an toàn làm cho enum tĩnh.Làm cho tư nhân này có tĩnh hay không?

Nhưng trong hầu hết các ví dụ tôi đã thấy, enum lồng nhau không bao giờ được tạo thành tĩnh. Vì vậy, đó là cách ưa thích để xác định một enum lồng nhau (tư nhân)? Liệu nó thực sự có ý nghĩa để không làm cho nó tĩnh?

public class MyClass { 
    private static enum Action { 
     READ("read"), 
     WRITE("write"); 

     final String value; 

     Action(String value) { 
      this.value = value; 
     } 

     String getValue() { 
      return value; 
     } 
    } 

    // attributes, methods, constructors and so on 
} 

Trả lời

35

Các Java Language Specification, section 8.9, khẳng định:

loại enum Nested đang ngầm tĩnh. Nó được phép khai báo một cách rõ ràng một kiểu enum lồng nhau là tĩnh.

Vì vậy, bạn có thể, nhưng bạn không phải làm như vậy, và điều đó sẽ không có sự khác biệt. Cá nhân tôi không nghĩ rằng tôi sẽ bận tâm, vì nó là tiềm ẩn anyway.

4

loại enum Nested đang ngầm tĩnh :)

4

Nếu một enum là thành viên của một lớp, nó là ngầm tĩnh

Các vấn đề liên quan