Java enum путаница с созданием битовой маски и проверкой разрешений

Я хочу перенести этот модуль разрешений на c# в java, но я запутался, как я могу сделать это, когда я не могу сохранить числовое значение в базе данных, а затем привести его к представлению перечисления.

В c# я создаю перечисление следующим образом:

public enum ArticlePermission
{
     CanRead   = 1,
     CanWrite  = 2,
     CanDelete = 4,
     CanMove   = 16
}

Затем я могу создать набор разрешений следующим образом:

ArticlePermission johnsArticlePermission = ArticlePermission.CanRead | ArticlePermission.CanMove;

Затем я сохраняю его в базе данных с помощью:

(int)johnsArticlePermission

Теперь я могу прочитать его из базы данных как целое число/длинное, и привести его следующим образом:

johnsArticlePermission = (ArticlePermission) dr["articlePermissions"];

И я могу проверить разрешения следующим образом:

if(johnsArticlePermission & ArticlePermission.CanRead == ArticlePermission.CanRead) 
{

}

Как я могу сделать это в java? Насколько я понимаю, в java можно преобразовать перечисление в числовое значение, а затем преобразовать его обратно в java-перечисление.

Идеи?

8
задан Janus Troelsen 10 February 2015 в 01:42
поделиться