[英]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.
所以請協助我宣布這個枚舉。 提前致謝。
您的枚舉聲明存在多個問題:
這應該工作,我也清理了一點代碼:
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....
}
您所需的解決方案可以是這個或類似的。
有關更多參考,請查看以下鏈接
使用逗號分隔符
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.