1 / 12

enum

enum. public enum Week {Sunday, Moday , Tuesday, Wednesday, Thursday, Friday, Saturday} Week.Sunday.ordinal ()  0 Week.Sunday  “Sunday”. enum. 不可繼承 public enum Suites exten Enum { } 可實作 interface 不能放在方法中 所有成員 為 static final 可以用 == 或 equals 來比較

Download Presentation

enum

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. enum public enum Week {Sunday, Moday, Tuesday, Wednesday, Thursday, Friday, Saturday} Week.Sunday.ordinal() 0 Week.Sunday “Sunday”

  2. enum • 不可繼承 • public enum Suites extenEnum{ • } • 可實作 interface • 不能放在方法中 • 所有成員為static final • 可以用==或equals來比較 • Compiler會自動加入private final 於列值中

  3. Enum • An enum specifies a list of constant values assigned to a type. • An enum is NOT a String or an int. • An enum constant's type is the enum type. • An enum can be declared outside or inside a class, but NOT in a method. • You can NEVER invoke an enum constructor directly.

  4. Enum • The enum constructor is invoked automatically, with the arguments you define after the constant value. • You can define more than one argument to the constructor, and you can overload the enum constructors • An enum declared outside a class must NOT be marked static, final, abstract, protected, or private.

  5. Enum • enum constants can send arguments to the enum constructor, using the syntax BIG(8). • Compiling an enum generates a .class file whose name is derived from the enum's name. • The semicolon at the end of an enum declaration is optional. These are legal: • enumFoo { ONE, TWO, THREE} • enumFoo { ONE, TWO, THREE}; • Foo.values() returns an array of MyEnum's values.

  6. Declaring Enums enumProblem { BIG, HUGE, SMALL }   // this cannot be private or protectedclass MyClass {   Problem size;}public class MainClass {public static void main(String[] args) {MyClass drink = new MyClass();drink.size = Problem.BIG;           }}

  7. An example of declaring an enum inside a class • class MyClass2 {enumProblem {BIG, HUGE, SMALL }  Problem size;}public class MainClass {public static void main(String[] args) {    MyClass2 drink = new MyClass2();drink.size = MyClass2.Problem.BIG;   // enclosing class name required  }}

  8. You cannot declare enums in a method • enum Problem {BIG, HUGE, SMALL } • class MyClass { • Problem size; • } • public class MainClass { • public static void main(String[] args) { • enum Problem { BIG, HUGE, SMALL } // WRONG! • MyClass drink = new MyClass(); • drink.size = Problem.BIG; • } • } • Exception in thread "main" java.lang.Error: Unresolved compilation problem: • The member enum Problem cannot be local at MainClass.main(MainClass.java:9)

  9. 8 BIG 8 HUGE 10 SMALL 16 • enum Problem { • // 8, 10 & 16 are passed to the constructor • BIG(8), HUGE(10), SMALL(16); • Problem(int ounces) { // constructor • this.ounces = ounces; • } • private int ounces; • public intgetOunces() { • return ounces; • } • } • class MyClass { • Problem size; • public static void main(String[] args) { • MyClass drink1 = new MyClass(); • drink1.size = Problem.BIG; • MyClass drink2 = new MyClass(); • drink2.size = Problem.SMALL; • System.out.println(drink1.size.getOunces()); • for(Problem cs: Problem.values()) • System.out.println(cs + " " + cs.getOunces()); • } • }

  10. Enums may have main() methods and can be invoked as applications. • enumLightState { • RED, YELLOW, GREEN;public static void main(String[] argv) {System.out.println(LightState.RED.toString());  }}

  11. Enums have built-in name() and toString() methods, both of which return the name of the current instance. public class MainClass {public static void main(String[] argv) {System.out.println(LightState.RED.name());  }}enumLightState {  RED, YELLOW, GREEN;}

  12. You can add data, methods, and constructors to an enum. • enumSuit {  DIAMOND(true), HEART(true), CLUB(false), SPADE(false);private booleanred;  Suit(booleanb) {    red = b;  }public booleanisRed() {return red;  }public String toString() {    String s = name();    s += red ? ":red" : ":black";return s;  }}

More Related