Обычный enum — класс:


public enum UserType {
	//admins group
	ADMIN     (true,    true, true),
	MAIN_MODERATOR (true   , true, true),
	MODERATOR (true   , true, false),
	
	//users group
	BUYER     (false,   false, false), 
	SELLER    (false,   true, false);
	
	private boolean isEditUserComments;
	private boolean isEditModeratorComments;
	private boolean isAddProduct;
	
	private UserType(boolean isEditUserComments,
			boolean isEditModeratorComments, boolean isAddProduct) {
		this.isEditUserComments = isEditUserComments;
		this.isEditModeratorComments = isEditModeratorComments;
		this.isAddProduct = isAddProduct;
	}
	
	public boolean isEditUserComments() {
		return isEditUserComments;
	}

	public boolean isEditModeratorComments() {
		return isEditModeratorComments;
	}

	public boolean isAddProduct() {
		return isAddProduct;
	}
	
}

Использую класс EnumSet можно разбивать константы на группы, получать группы, которые не входят в другие группы и т.п.


import static test.UserType.*;

import java.util.EnumSet;




public class Main {
	
	public static void main(String[] args) {
		//all 
		EnumSet<UserType> allUsersType = EnumSet.allOf(UserType.class);
		System.out.println(allUsersType);
		
		//only admins group
		EnumSet<UserType> adminsGroup = EnumSet.range(ADMIN, MODERATOR);
		System.out.println(adminsGroup);
				
		//all elements missing in adminsGroup
		EnumSet<UserType> userGroup = EnumSet.complementOf(adminsGroup);
		System.out.println(userGroup);
		
		
	}

}

Вывод на консоль:
[ADMIN, MAIN_MODERATOR, MODERATOR, BUYER, SELLER]
[ADMIN, MAIN_MODERATOR, MODERATOR]
[BUYER, SELLER]

Реклама