Определения перечислений с данными и поведением - PullRequest
1 голос
/ 30 июня 2011

Вопрос новичка о комиссионных, если кто-то еще находится в ситуации, пытающейся сгенерировать нижеприведенный класс Java из thriftIDL.Я вижу, что он поддерживает только 32-битные неотрицательные целые значения.Это из-за отсутствия поддержки перечисленных ниже типов в других языках?Я не видел, можно ли это сделать в экономном IDL.

public enum ExceptionTypes {

        ERROR_THIS("APP_EXP_001","Some message"), ERROR_THAT(...etc

    private String errorCode;

    private String defaultMessage;

    private ExceptionTypes(String errorCode, String defaultMessage) {
        this.errorCode = errorCode;
        this.defaultMessage = defaultMessage;
    }

    public String getErrorCode() {
        return this.errorCode;
    }

    public String getDefaultMessage() {
        return this.defaultMessage;
    }
}

1 Ответ

1 голос
/ 01 июля 2011

Невозможно добавить описание поведения в перечисления Thirft, главным образом потому, что Thirft должен был быть небольшим и применимым ко многим языкам.

Тем не менее, вы можете написать себе конструктор, который создаст одно перечисление java, как указано выше, когда дано третье число.Это добавит один уровень обработки в ваш код после того, как вы получили данные от экономичного уровня, но в реальных случаях использования структуры данных, используемые на проводе, редко бывают точно такими же, как те, которые используются внутри приложения в любом случае.

Thirft (и любой уровень rpc, CORBA или аналогичный уровень) служит для упрощения сетевого кода и повышения надежности, а не для того, чтобы скрыть его существование, чтобы можно было забыть о нем.

...