Java растяжимое перечисление

В настоящее время Cygnus не поддерживает уведомления NGSIv2, поэтому вам нужно использовать конечную точку NGSIv1. Вы можете найти больше информации в этом разделе документации Cygnus и , а также в других .

7
задан Milhous 6 April 2012 в 18:01
поделиться

6 ответов

Если бы я понимаю правильно, что требуется сделать, что-то вроде этого:

public abstract class DatabaseField {
    private String fieldName;

    private DatabaseField(String fieldName) {
        this.fieldName = fieldName;
    }

    public String getFieldName() {
        return fieldName;
    }
}

Затем определите свое перечисление для расширения этого класса. Однако, к сожалению, перечисление не может расширить класс, но оно может реализовать интерфейс, таким образом, лучшее, которое можно сделать в данный момент, определяют интерфейс, который включает getFieldName () метод, и имейте всю реализацию перечислений этот интерфейс.

Однако это означает, что необходимо будет копировать реализацию этого метода (и любые другие) во всех перечислениях. Существуют некоторые предложения в этом вопросе о способах минимизировать это дублирование.

10
ответ дан 6 December 2019 в 05:08
поделиться

Все перечисления неявно расширяются java.lang.Enum. Так как Java не поддерживает множественное наследование, перечисление не может расширить ничто больше.

16
ответ дан 6 December 2019 в 05:08
поделиться

Перечисления могут реализовать интерфейсы, но не расшириться, с тех пор при компиляции они переводят в java.lang. Перечисление.

6
ответ дан 6 December 2019 в 05:08
поделиться

Абстрактные перечисления потенциально очень полезны (и в настоящее время не позволенные). Но предложение и прототип существуют, если требуется лоббировать кого-то в Sun для добавления его:

http://freddy33.blogspot.com/2007/11/abstract-enum-ricky-carlson-way.html

Sun RFE:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6570766

6
ответ дан 6 December 2019 в 05:08
поделиться

Ручное ремесло перечисление в механизме, подобном определенному в Эффективном Java Josh Bloch.

Я добавил бы, что, если необходимо "расширить" перечисление, затем возможно, перечисление не является конструкцией, которая Вы после. Они предназначены, чтобы быть статическими константами, по моему скромному мнению.

0
ответ дан 6 December 2019 в 05:08
поделиться

Для возврата к предварительному Java 5 дней смотрите на Объект 21, Глава 5, Эффективный Java Josh Bloch. Он говорит о расширяющихся "перечислениях" путем добавления значений, но возможно Вы могли использовать некоторые методы для добавления нового метода?

0
ответ дан 6 December 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: