Для тех случаев когда enum
нету, к примеру, при использовании BeanShell:
http://alumnus.caltech.edu/~leif/OO/Enum.html
Подкатом небольшое дополнение и пример.
Небольшая ремарка, для BeanShell придется разносить класс и сами создания констант, к примеру так:
// Не обязательно
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
Хранит описание одной записи в дополнительных действиях, а так же собирает их в перечисление
дабы можно было использовать интерфейс коллекций для перебора при формировании списка
*/
class AdditionalActionId
{
private static Collection all_ids = new ArrayList();
private int value;
private String description;
/**
Конструктор, принимает ID дополнительного действия и описание (что будет в меню отображаться)
*/
AdditionalActionId(int value, String description)
{
this.value = value;
this.description = description;
all_ids.add(this);
}
/**
Возвращает Id действия
*/
public int toInt()
{
return this.value;
}
/**
Возвращает описание действия
*/
public String toString()
{
return this.description;
}
/**********************************************************************************************/
/* Statics methods (class wide methods) ------------------------------------------------------*/
/**********************************************************************************************/
/**
Получаем итератор для перебора всех ранее созданных действий
*/
public static Iterator getIterator()
{
return all_ids.iterator();
}
/**
Получаем количество дополнительных действий
*/
public static int getSize()
{
return all_ids.size();
}
}
/**
Класс-обертка, для реализации некоторого подобия Enum (который не работает в BeanShell)
*/
class AdditionalActionIds
{
private static int action = 1;
// Перечисляем наши действия
//public static final AdditionalActionId TARIFF_ADD_COMMON1 = new AdditionalActionId(action++, "TEST");
//public static final AdditionalActionId TARIFF_ADD_COMMON2 = new AdditionalActionId(action++, "TEST");
//public static final AdditionalActionId TARIFF_ADD_COMMON3 = new AdditionalActionId(action++, "TEST");
//public static final AdditionalActionId TARIFF_ADD_COMMON4 = new AdditionalActionId(action++, "TEST");
// Must be LAST
public static final AdditionalActionId ABON_RECALC_ALL = new AdditionalActionId(1000000, "Дополнительное действие");
}
// Пример перебора всех значений
/*Iterator it = AdditionalActionId.getIterator();
while (it.hasNext())
{
action = (AdditionalActionId)it.next();
print("ID: " + action.toInt() + ", desc: " + action.toString());
}
*/
// Пример обращения к конкретному элементу
/*AdditionalActionId action = AdditionalActionIds.TARIFF_ADD_COMMON3;
print("ID: " + action.toInt() + ", desc: " + action.toString());*/
Иначе имеем проблемы. Не знаю, бага или фича, но факт.