我忙於嘗試將一些iOS代碼翻譯成Android代碼。 iOS的代碼包含枚舉,如下所示:將iOS Enums翻譯成Android
typedef NS_OPTIONS(NSUInteger, Traits) {
TraitNumberOne = 1<<0,
TraitNumberTwo = 1<<1,
);
我從來沒有與枚舉之前在Android的工作,和我有麻煩解釋文件和可用的例子。我如何將上述示例轉換爲Android代碼?
我忙於嘗試將一些iOS代碼翻譯成Android代碼。 iOS的代碼包含枚舉,如下所示:將iOS Enums翻譯成Android
typedef NS_OPTIONS(NSUInteger, Traits) {
TraitNumberOne = 1<<0,
TraitNumberTwo = 1<<1,
);
我從來沒有與枚舉之前在Android的工作,和我有麻煩解釋文件和可用的例子。我如何將上述示例轉換爲Android代碼?
使用本
public enum NS_OPTIONS {
TraitNumberOne (1<<0),
TraitNumberTwo (1<<1);
private final int Option;
public int getOption()
{
return Option;
}
private NS_OPTIONS(int option) {
this.Option= option;
}
}
使用方法如下:
int value = NsOptions.TraitNumberOne.getOption();
這甚至沒有有效的(=可編譯的)代碼。 –
好吧,你可以指出錯誤的位置 – thumbmunkeys
我同意,對不起。在Java(以及Android)中,您不會將整數指定給'enum'成員。看看[這個線程](http://stackoverflow.com/questions/1681976/)。 Oracle提供了關於Java中的枚舉的[可理解的教程](http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)。 –
Java的枚舉都比較簡單,但可以更復雜,以適應您想使用它們任何需要。如果你想要一個枚舉的更先進的功能
public enum Traits{
TraitNumberOne,
TraitNumberTwo
}
,它的處理完全一樣,它是靜態實例化一個類:如果你只是想要一個枚舉類型安全,你可以聲明變量名這樣的枚舉中的每個項目。所以,你可以有一個構造函數和輸入的任何值要與各個項目相關的,就像這樣:
public enum Traits{
TraitNumberOne(0x01),
TraitNumberTwo(0x02),
// future items go here
; // don't forget the semi-colon, which indicates the list of items is ending
// now, create a private variable to store the data
private final int data;
// and the constructor to set the data
private NsOptions(int data){
this.data = data;
}
// now, you can provide an accessor to provide access to the data
public int getData(){
return this.data;
}
}
可以使用上述枚舉這樣的:
Traits currentOptions = Traits.TraitNumberOne;
int optionsData = currentOptions.getData();
僅供參考,枚舉名稱應該是'Traits'。 'NS_OPTIONS'是一個宏。 – thegrinner
NS_OPTIONS的想法是允許枚舉值的所有可能組合由一個值表示(這就是爲什麼使用按位運算符)。在Java中,我猜相當於將是:
public enum Permission {
TraitNumberOne (0b01),
TraitNumberTwo (0b10);
...
}
我們可以在Android中實現類似,
public enum NS_OPTIONS{
TraitNumberOne(1),TraitNumberTwo(2);
private int type;
NS_OPTIONS(int type){
this.type = type;
}
public int getType(){
return type;
}
}
,如果你想使用上述從你的類枚舉,你可以使用它像,
int i =NS_OPTIONS.TraitNumberOne;//which will return 1
int j =NS_OPTIONS.TraitNumberTwo;//which will return 2;
僅供參考,枚舉名稱應該是'Traits'。 'NS_OPTIONS'是一個宏。 – thegrinner
僅供參考,主要是從Java背景中讀取這個數據,enum是'Traits'。 'NS_OPTIONS'是一個宏 - 第一項是類型(這裏是整數),第二項是名稱。 – thegrinner