2017-08-09 674 views
4

我的Java分配的一部分需要,我可以創建代表四種不同類型的口罩其中覆蓋遊戲板的平方(形狀)的枚舉。測量中的面具是3x3,缺少3x3塊的一些正方形(這些不會隱藏遊戲板上的正方形)。在枚舉使用數組的Java

1 0 1 //you can think of the 0's as missing squares, and the 1's as the mask 
1 1 1 
1 1 0 

現在我要附加一個二進制矩陣上喜歡到每個使用數組一樣int[][]四個獨特的面具,像這樣:

public enum Mask { 
    W([[1,1,0],[1,1,1],[1,0,1]]), 
    X([[1,0,1],[1,0,1],[1,1,1]]), 
    Y([[0,1,1],[1,1,1],[1,1,0]]), 
    Z([[1,0,1],[1,1,1],[1,0,1]]); 

,當我試圖做我的IDE變得很不高興這個,所以我肯定我在理解枚舉/數組時忽略了一些東西。

我猜我不能初始化在枚舉或類似的東西數組?

我該如何實現這個想法?

回答

6

當我試圖做我的IDE變得很不高興這

是的,那是因爲你給陣列錯誤..

你都無法做到這一點:

W([[1,1,0],[1,1,1],[1,0,1]]), 

無效,編譯器不知道你是「試圖通過」數組作爲參數,最後你只是試圖給作爲參數數組(在你的情況下annonymous之一),所以你必須使用表單

W(new int[] { 1, 1 }); 

的語法看到以下exaplem作爲定向點:

enum Mask { 
    W(new int[] { 1, 1 }); 
    private final int[] myArray; 

    private Mask(int[] myArray) { 
     this.myArray = myArray; 
    } 

} 
+4

++爲OP做些事情而不是做完整的家庭作業。 – Pshemo

+2

你打我幾秒鐘,但我想補充的OP:枚舉僅僅是一個聲明,只要您實例的附加功能類。你可以用它做所有事情,你可以在課堂上做。聲明構造函數,字段,方法等... –

+0

是否有可能實例化枚舉參數外的數組,而只是引用它? – 420fedoras