2015-01-05 7 views
0

Новое на Java, но я проделал некоторое программирование .Net. Мне интересно, есть ли у Java эквивалент .Net eum? Ниже приведен пример. Я знаю, что Java имеет перечисление, но вы не можете присваивать ему значения.Java Enum с числовыми значениями

В .Net Я мог бы сделать перечисление со значениями. При использовании в коде мне не нужно комментировать, или, при написании новых процедур, помните, что представляют 0, 1, 2 и 3. Я мог бы также использовать перечисление как тип параметра в конструкторе, а затем передать AccessType.Full, например, в качестве аргумента.

Как я могу дублировать это Android Studio?

Public Class Delete 

    Private Enum AccessType 
     Full = 0 
     ReadOnly = 1 
     Delete = 2 
     Add = 3 
    End Enum 

    Private Sub DeleteIem(sItem As String) 
     If User.Access = AccessType.Delete Or User.Access = AccessType.Full Then 
      'delete something here 
     Else 
      MsgBox("You do not have access to delete these items.", vbInformation 
     End If 
    End Sub 

End Class 

В Android Studio у меня есть блок if {}.

if (AllLists.get(pos).Access == 0) { 
    MsgText += getResources().getString(R.string.info_cat_shared_no) + "\n"; 
} 
else if (AllLists.get(pos).Access == 1){ 
    MsgText += getResources().getString(R.string.info_cat_shared_edit) + "\n"; 
} 
else if (AllLists.get(pos).Access == 2){ 
    MsgText += getResources().getString(R.string.info_cat_shared_no_edit) + "\n"; 
} 

Это превратит код ниже, и я не должен был бы всегда проверять, что 0, 1, 2, 3 & представляют. Я просмотрел перечисления Java, и это всего лишь список строк, который не работает для этого, или, по крайней мере, я не могу его реализовать.

if (AllLists.get(pos).Access == AccessType.Full) { 
    MsgText += getResources().getString(R.string.info_cat_shared_no) + "\n"; 
} 
else if (AllLists.get(pos).Access == AccessType.ReadOnly){ 
    MsgText += getResources().getString(R.string.info_cat_shared_edit) + "\n"; 
} 
else if (AllLists.get(pos).Access == AccessType.Delete){ 
    MsgText += getResources().getString(R.string.info_cat_shared_no_edit) + "\n"; 
} 
+0

возможно дубликат [Java Enum возвратного Int] (http://stackoverflow.com/questions/13792110/java-enum-return -int) – kamoor

ответ

1

Пожалуйста, посмотрите на эту страницу с Oracle: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

Вы бы иметь что-то подобное для ENUM (код тестировался):

public enum AccessType 
{ 
    Full(0), 
    ReadOnly(1), 
    Delete(2), 
    Add(3); 

    AccessType(int type) 
    { 
     this.type = type; 
    } 
} 

Но конструктор сам по себе не МАЕ необходимо, так как вы можете использовать такой случай:

switch(AllLists.get(pos).Access) 
{ 
    case Full: 
     // ... 
     break; 

    case ReadOnly: 
     // ... 
     break; 

    case Delete: 
     // ... 
     break; 

    case Add: 
     // ... 
     break; 
} 
2

На самом деле, java перечисления - довольно удобный объект. Вы можете добавить свойства, даже методы, если хотите. Чтобы назначить свойства, просто добавьте значение в качестве аргумента в застройщик, как в:

public enum AccessType { 
    Full(0), 
    ReadOnly(1), 
    Delete(2), 
    Add(3); 
    private final int code; 

    AccessType(int code) { 
     this.code = code 
    } 

    public int getCode() { 
     return this.code; 
    } 
} 
+0

Благодарю вас обоих. Я прочитал два или три примера перечислений Java и не показал, как добавить такие значения. Это были дни недели или цвета, или что-то еще с просто струнами. Разочарование. – user1091524

Смежные вопросы