enum

Post on 31-Dec-2015

26 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

enumpublic enum Week {Sunday, Moday, Tuesday,

Wednesday,Thursday, Friday, Saturday}

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

enum不可繼承

1. public enum Suites exten Enum{2. }

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

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.

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

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

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

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  }}

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)

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

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

  }

}

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

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

top related