enum

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

Upload: chanda-norris

Post on 31-Dec-2015

26 views

Category:

Documents


0 download

DESCRIPTION

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 來比較 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: enum

enumpublic enum Week {Sunday, Moday, Tuesday,

Wednesday,Thursday, Friday, Saturday}

Week.Sunday.ordinal() 0Week.Sunday “Sunday”

Page 2: enum

enum不可繼承

1. public enum Suites exten Enum{2. }

可實作 interface 不能放在方法中 所有成員為 static final 可以用 == 或 equals 來比較 Compiler 會自動加入 private final 於列值中

Page 3: enum

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.

Page 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.

Enum

Page 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:

enum Foo { ONE, TWO, THREE}enum Foo { ONE, TWO, THREE};Foo.values() returns an array of

MyEnum's values.

Enum

Page 6: enum

enum Problem { BIG, HUGE, SMALL }  // this cannot be private or protected

class MyClass {   Problem size;}

public class MainClass {   public static void main(String[] args) {      MyClass drink = new MyClass();      drink.size = Problem.BIG;           }}

Declaring Enums

Page 7: enum

An example of declaring an enum inside a class

class MyClass2 {  enum Problem {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  }}

Page 8: enum

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)

Page 9: enum

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 int getOunces() { 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()); } }

8BIG 8HUGE 10SMALL 16

Page 10: enum

Enums may have main() methods and can be invoked as applications.enum LightState {

   RED, YELLOW, GREEN;

  public static void main(String[] argv) {

     System.out.println(LightState.RED.toString());

  }

}

Page 11: enum

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());  }}

enum LightState {  RED, YELLOW, GREEN;}

Page 12: enum

You can add data, methods, and constructors to an enum. enum Suit {

  DIAMOND(true), HEART(true), CLUB(false), SPADE(false);

  private boolean red;

  Suit(boolean b) {    red = b;  }

  public boolean isRed() {    return red;  }

  public String toString() {    String s = name();    s += red ? ":red" : ":black";    return s;  }}