2012-12-09 60 views
-4

所以當我使用一些API時,我發現它們可以返回一些整數,例如:Settings.MAIN_SCREEN,那可能會返回1。我假設Settings是一個枚舉,但我不知道如何從一個枚舉構造函數返回一個變量。所有我能做的就是Settings.MAIN_SCREEN.getId()簡單的枚舉困難

如果有人知道如何做到這一點,請分享

+0

爲什麼你認爲它的枚舉?我會說'Settings'是普通類,常量爲'public static final int MAIN_SCREEN = 1'。 – Pshemo

回答

2

枚舉不能「是」或「回報」整型。

在Java進行枚舉之前,有一個通用約定使得接口充滿命名常量。那些可以有任何類型。另一方面,枚舉是對象,如前所述,您必須擁有一個存取器,以將整數值與一個整數值相關聯。

1

請提供您正在使用的API的實際示例(例如,指向其JavaDoc的鏈接)。

從你寫的是什麼,我認爲Settings.MAIN_SCREEN其實不是一個枚舉,但恆定的,僅此而已:

public class Settings { 
    public static final int MAIN_SCREEN = 1; 
} 
0

現有的答案是當場上;正如他們所說的那樣,它可能是你所看到的不是一個枚舉,而是一個對象中的一個恆定的靜態值。無論我以爲我會添加其他可能有用的東西。枚舉類似於對象,因爲它們可以有構造函數和成員字段,但構造函數不能從外部訪問。 Check out the documentation for more info.

要假設回答你的問題,你可以做這樣的事情:

public enum Settings{ 
    MAIN_SCREEN(1) // internally invoking this enum's constructor, passing the value 1. 

    private int id;   

    private Settings(int id){ 
     this.id= id; 
    } 

    public int getId(){ 
     return this.id; 
    } 
} 
在你的代碼

與某個地方,那麼你可以這樣做:

Settings.MAIN_SCREEN.getId() // this will return the value 1, as specified in the enumeration. 

據我所知,由於枚舉本身是在內部維護的,因此無法直接從枚舉中獲取整數值而無需使用此方法。您可以將Enum的名稱作爲字符串(getName())。如果你提到的這個設置是來自一個對你不利的第三方api,那麼你可能就在這個小河上了。