Quiero portar este módulo de permiso C# a java, pero no estoy seguro de cómo puedo hacerlo cuando no puedo guardar el valor numérico en la base de datos y luego enviarlo a la representación de la enumeración.Confusión enum de Java con la creación de una máscara de bits y comprobación de permisos
en C#, que crean una enumeración de esta manera:
public enum ArticlePermission
{
CanRead = 1,
CanWrite = 2,
CanDelete = 4,
CanMove = 16
}
A continuación, puedo crear un conjunto de permisos como:
ArticlePermission johnsArticlePermission = ArticlePermission.CanRead | ArticlePermission.CanMove;
entonces puedo guardar esto en la base de datos usando:
(int)johnsArticlePermission
Ahora puedo leerlo desde la base de datos como un entero/largo, y lo hechizo como:
johnsArticlePermission = (ArticlePermission) dr["articlePermissions"];
Y puedo comprobar los permisos como:
if(johnsArticlePermission & ArticlePermission.CanRead == ArticlePermission.CanRead)
{
}
¿Cómo puedo hacer esto en Java? Por lo que entiendo, en java, puede convertir la enumeración en un valor numérico y luego convertirla de nuevo a una enumeración java.
Ideas?
http://stackoverflow.com/questions/1067352/can-set-enum-start-value-in-java –
[Y esto, que dirigiéndose directamente a las enumeraciones de almacenamiento de la base de datos] (http://stackoverflow.com/questions/229856/ways-to-save-enums-in-database). –
@DaveNewton si uso un enumset, no puedo guardarlo de la misma manera ya que obtener el nombre no tendrá sentido si tengo 3 valores enum ¿No? – Blankman