簡體   English   中英

java中的枚舉聲明

[英]enum declaration in java

我已經聲明了枚舉功能如下

public static enum SHAPE


{
    static
    {
      LINE = new SHAPE("LINE", 3);
      CIRCLE = new SHAPE("CIRCLE", 4);
      TEXT = new SHAPE("TEXT", 5);
      SHAPE[] arrayOfSHAPE = new SHAPE[6];
      arrayOfSHAPE[0] = DRAW;
      arrayOfSHAPE[1] = SQUARE;
      arrayOfSHAPE[2] = TRIANGLE;
      arrayOfSHAPE[3] = LINE;
      arrayOfSHAPE[4] = CIRCLE;
      arrayOfSHAPE[5] = TEXT;
    }
  }

但我得到了

Syntax error, insert "}" to complete Block at line4 and getting Syntax error, insert "EnumBody" to complete EnumDeclaration at line1.

所以請協助我宣布這個枚舉。 提前致謝。

您的枚舉聲明存在多個問題:

  1. 枚舉聲明中的靜態沒有任何意義,並導致編譯錯誤。
  2. 你需要在課程開始時定義枚舉的值(見下文)。
  3. 數組聲明應該在靜態塊之外

這應該工作,我也清理了一點代碼:

public enum Shape {
    LINE("LINE", 3),
    CIRCLE("CIRCLE", 4),
    TEXT("TEXT", 5),
    // DRAW, SQUaRE, TRIANGLE, ...
    ;

    public static final Shape[] SHAPES= new Shape[6];

    static
    {
      SHAPES[0] = DRAW;
      SHAPES[1] = SQUARE;
      SHAPES[2] = TRIANGLE;
      SHAPES[3] = LINE;
      SHAPES[4] = CIRCLE;
      SHAPES[5] = TEXT;
    }

    // Constructor etc.
}

我認為您不需要SHAPES數組,因為您可以通過調用: Shape.values()來訪問枚舉的所有值

java中的枚舉是這樣的:

public enum SHAPE {

      LINE("LINE", 3),
      CIRCLE("CIRCLE", 4),
      TEXT("TEXT", 5);

      private String type;
      private Integer id;

      SHAPE(String type,Integer id){
        this.type= type;
        this.id = id;  
      }    

      // Getters for type and id 


}

首先,我不知道你在嘗試做什么。 但是根據enum聲明,您沒有指定任何實例(它是空的)。

public enum SHAPE
{
;//define a seperator where one declares instances.
static
{
  SHAPE LINE = new SHAPE("LINE", 3);
  SHAPE CIRCLE = new SHAPE("CIRCLE", 4);
  SHAPE TEXT = new SHAPE("TEXT", 5);
  SHAPE[] arrayOfSHAPE = new SHAPE[6];
  arrayOfSHAPE[0] = DRAW;
  arrayOfSHAPE[1] = SQUARE;
  arrayOfSHAPE[2] = TRIANGLE;
  arrayOfSHAPE[3] = LINE;
  arrayOfSHAPE[4] = CIRCLE;
  arrayOfSHAPE[5] = TEXT;
 }
}

enum類聲明不能是靜態的。 你應該像塞爾吉奧所說的那樣做

    public enum SHAPE {


    LINE("LINE", 3),
    CIRCLE("CIRCLE", 4),
    TEXT("TEXT", 5);

    public final String shapeName;
    public final int shapeValue;
    public static final SHAPE[] arrayOfShap = values();

    static {
        // This is used to do some operations on enum generally like creating a map of this enums. 
    }

    SHAPE(String name, int value){
        this.shapeName = name;
        this.shapeValue = value;
    }

    // Here one can define static methods to get enum values from arrays, map etc....
}

您所需的解決方案可以是這個或類似的。

有關更多參考,請查看以下鏈接

java示例

對於帶枚舉的靜態塊

使用逗號分隔符

public static enum SHAPE
{
    static
    {
      LINE = new SHAPE("LINE", 3),
      CIRCLE = new SHAPE("CIRCLE", 4),
      TEXT = new SHAPE("TEXT", 5),
      SHAPE[] arrayOfSHAPE = new SHAPE[6],
      arrayOfSHAPE[0] = DRAW,
      arrayOfSHAPE[1] = SQUARE,
      arrayOfSHAPE[2] = TRIANGLE,
      arrayOfSHAPE[3] = LINE,
      arrayOfSHAPE[4] = CIRCLE,
      arrayOfSHAPE[5] = TEXT
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM