所以當我使用一些API時,我發現它們可以返回一些整數,例如:Settings.MAIN_SCREEN
,那可能會返回1
。我假設Settings
是一個枚舉,但我不知道如何從一個枚舉構造函數返回一個變量。所有我能做的就是Settings.MAIN_SCREEN.getId()
簡單的枚舉困難
如果有人知道如何做到這一點,請分享
所以當我使用一些API時,我發現它們可以返回一些整數,例如:Settings.MAIN_SCREEN
,那可能會返回1
。我假設Settings
是一個枚舉,但我不知道如何從一個枚舉構造函數返回一個變量。所有我能做的就是Settings.MAIN_SCREEN.getId()
簡單的枚舉困難
如果有人知道如何做到這一點,請分享
枚舉不能「是」或「回報」整型。
在Java進行枚舉之前,有一個通用約定使得接口充滿命名常量。那些可以有任何類型。另一方面,枚舉是對象,如前所述,您必須擁有一個存取器,以將整數值與一個整數值相關聯。
請提供您正在使用的API的實際示例(例如,指向其JavaDoc的鏈接)。
從你寫的是什麼,我認爲Settings.MAIN_SCREEN
其實不是一個枚舉,但恆定的,僅此而已:
public class Settings {
public static final int MAIN_SCREEN = 1;
}
現有的答案是當場上;正如他們所說的那樣,它可能是你所看到的不是一個枚舉,而是一個對象中的一個恆定的靜態值。無論我以爲我會添加其他可能有用的東西。枚舉類似於對象,因爲它們可以有構造函數和成員字段,但構造函數不能從外部訪問。 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,那麼你可能就在這個小河上了。
爲什麼你認爲它的枚舉?我會說'Settings'是普通類,常量爲'public static final int MAIN_SCREEN = 1'。 – Pshemo