Как проверить аргументы абстрактного метода для всех реализаций? - PullRequest
1 голос
/ 23 апреля 2019

Я пишу абстрактный парсер json с абстрактным методом

    T parse(JsonNode node);

Моя цель - проверить аргумент (узел).Он должен быть не нулевым, и, если это действительно, экземпляр NullNode.class должен быть возвращен.

Не нашел много в сети.

public abstract class AbstractJsonParser<T> extends AbstractHttpMessageConverter<T> {
....
abstract T parse(JsonNode node);

@Override
    protected T readInternal(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
        JsonNode parentNode = objectMapper.readTree(inputMessage.getBody());
        return parse(parentNode);
    }
}

Есть ли способ вjava8 сделать это?У меня будет много конкретных реализаций, и я не хочу каждый раз проверять наличие нулевых значений.Заранее спасибо.

1 Ответ

0 голосов
/ 23 апреля 2019

Вы можете сделать parse конкретным методом и реализовать деталь

Он должен быть не нулевым, и, если это действительно так, должен быть возвращен экземпляр NullNode.class.

есть. Любая реализация сможет ссылаться на него по super.parse(node).

Если вам нужно заставить подклассы реализовать свою часть синтаксического анализа, шаблон шаблонного метода может пригодиться. Вы определяете общие части в AbstractJsonParser#parse и делегируете абстрактные шаги подклассам.

...