2017-01-30 33 views
-2

我對枚舉非常陌生,對編程只有初步的理解。我最近發現了關於枚舉的問題,並相信它們是我的一些問題的完美解決方案,但需要一些關於如何將它們合併到我的代碼中的幫助。如何使用另一個類中的枚舉變量?

我開始創建一個枚舉類。現在我正在爲我的枚舉使用7個常量,並且每個常量都有1個描述(?)它的String變量。我如何編碼?更重要的是,我如何從另一個課程訪問此課程?例如,我想打印與常量相關的字符串,即我的枚舉的當前值。請幫忙。這對我來說真的很難形容,所以希望你們知道我想要問什麼。

+0

不要解釋你的代碼 - 把一些在你的問題! – GhostCat

+1

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html – shmosel

+0

試試這個鏈接http://www.java2novice.com/java-lang/enum/defined-inside-class/ –

回答

-3

對不起我不好說,使其靜態

讓它公開。以便可以從導入類的任何類訪問它。

化妝somethingn這樣從不同類

public class DifferentClass 
{ 
    public enum reportType 
    { 
     firstReport = 1, 
     secondReport = 2 
    } 
} 

進口該類和訪問它喜歡的System.out.println( 「報告類型:」 + reportType.firstReport);

+0

Make什麼'公共靜態「?實際上,枚舉常量已經是。只有常量和某些實用方法應該是「公共靜態」。否則這種模式通常會導致麻煩。你的解釋不清楚「它」應該是什麼。如果你的意思是一個變量來保存一個枚舉值,那麼任何超出局部範圍的範圍都是不可能的。請詳細說明您的建議如何解決OP的問題。 –

+0

我建議在這個例子中,枚舉應該是一個頂級類,它的名字應該遵守Java命名約定。另外,你有沒有試過編譯你的代碼?因爲它有錯誤。 –

-2

要聲明一個枚舉,按照這個synatx Colors("RED", "BLUE")

要訪問的枚舉類,聲明爲public類。如果該類在另一個包中,則將該類導入引用這些枚舉的類中。

1

這已經涵蓋了official tutorial

public enum Animal { 
    COW("moo"), // <== calls constructor with any enum specific data 
    HORSE("neigh"), 
    SHEEP("ba ba"); 

    private final String noise; // stores the data 

    private Animal(String noise) { // <== private constuctor 
     this.noise = noise; 
    } 

    public String getNoise() { // <== allow access to the data 
     return noise; 
    } 
} 

訪問從另一個類

Animal animal = Animal.COW; 
System.out.println(animal.getNoise()); 
+0

'noise'應該是'final'。 –

+0

但是,如果沒有指定COW,你會怎麼做?給定任何給定的枚舉值,如何獲得相應的動物聲音? – Connor

+0

私有構造函數在這裏還有什麼函數? – Connor

-1

枚舉常量覆蓋toString方法,以便在默認情況下它返回常量的字符串名字。你甚至可以進一步覆蓋它。

Javadocs是你的朋友:http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#toString--

你也可以經常直接使用枚舉常量本身。

public enum Rainbow { 
    RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET; 
} 

使用的一種方法:

Rainbow rainbow = findRainbow(); 
switch (rainbow) { 
    case RED: 
    rosso(); 
    break; 
    case YELLOW: 
    giallo(); 
    break; 
    . . . 
    case VIOLET: 
    viola(); 
    break; 
} 

此外,枚舉的類,你可以給他們更多的方法,甚至不同的覆蓋方法對每個枚舉常量。像Java已經與toString一樣。

@shmosel已經給出了enum教程的鏈接。

相關問題