определите их как enum в вашем библиотечном проекте, например
public enum Planet { MERCURY, VENUS, MARS }
Android действительно использует другой подход, страшный постоянный интерфейс , как,
interface Planets {
static final int MERCURY = 1;
static final int VENUS = 2;
...
}
однако, это хорошо известный Java-шаблон (постоянный интерфейс, подробно описанный в Effective Java, цитирую,
Постоянный шаблон интерфейса - плохое использование интерфейсов. Это
класс использует некоторые константы внутри, это деталь реализации.
Реализация постоянного интерфейса приводит к тому, что эта деталь реализации
утечка в экспортированный API класса. Это не имеет никакого значения для
пользователи класса, что класс реализует постоянный интерфейс. В
На самом деле, это может даже сбить их с толку. Хуже того, это представляет собой обязательство: если
в будущем выпуске класс будет изменен так, чтобы он больше не нуждался
чтобы использовать константы, он все равно должен реализовать интерфейс для обеспечения
двоичная совместимость Если нефинальный класс реализует константу
интерфейс, все его подклассы будут загрязнены их пространства имен
константами в интерфейсе.
если вам нужно, чтобы константы имели значения int по какой-то причине, и вызова toString () для перечисления недостаточно, вы можете предоставить перечислению дополнительную информацию, например,
public enum ZipCode {
LYNNWOOD(98036), SAN_JOSE(95112), ...;
private int zipCode;
private ZipCode(int zipCode) { this.zipCode = zipCode; }
public int getZipCode() { return zipCode; }
}
Обратите внимание, что перечисления немного менее эффективны, чем целочисленные константы, но с точки зрения организации кода и ясности они намного лучше.