Tôi muốn chuyển mô-đun này cho phép java, nhưng tôi nhầm lẫn cách tôi có thể làm điều này khi tôi không thể lưu giá trị số trong cơ sở dữ liệu và sau đó truyền nó đến biểu diễn liệt kê.Java enum nhầm lẫn với việc tạo ra một bitmask và kiểm tra quyền
Trong C#, tôi tạo ra một enum như thế này:
public enum ArticlePermission
{
CanRead = 1,
CanWrite = 2,
CanDelete = 4,
CanMove = 16
}
Sau đó tôi có thể tạo ra một sự cho phép thiết lập như:
ArticlePermission johnsArticlePermission = ArticlePermission.CanRead | ArticlePermission.CanMove;
sau đó tôi tiết kiệm này vào cơ sở dữ liệu sử dụng:
(int)johnsArticlePermission
Bây giờ tôi có thể đọc từ cơ sở dữ liệu dưới dạng số nguyên/dài và truyền như sau:
johnsArticlePermission = (ArticlePermission) dr["articlePermissions"];
Và tôi có thể kiểm tra quyền như:
if(johnsArticlePermission & ArticlePermission.CanRead == ArticlePermission.CanRead)
{
}
Làm thế nào tôi có thể làm điều này trong java? Từ những gì tôi hiểu, trong java, bạn có thể chuyển đổi liệt kê thành một giá trị số, sau đó chuyển nó trở lại thành liệt kê java.
Ý tưởng?
http://stackoverflow.com/questions/1067352/can-set-enum-start-value-in-java –
[Và điều này, trực tiếp giải quyết lưu trữ enums cho DB] (http://stackoverflow.com/questions/229856/cách để tiết kiệm-enums-in-database). –
@DaveNewton nếu tôi sử dụng một enumset, tôi không thể lưu nó theo cùng một cách kể từ khi nhận được tên sẽ không có ý nghĩa nếu tôi có OR'd 3 enum giá trị không? – Blankman