如何为所有实现验证抽象方法的参数?

问题描述 投票:1回答:1

我正在用抽象方法编写一个抽象的json解析器

    T parse(JsonNode node);

我的目标是验证参数(节点)。它应该不为null,如果它实际上应该返回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中有没有办法做到这一点?我将有许多具体的实现,我不想每次都检查空值。提前致谢。

java validation abstract-class
1个回答
0
投票

您可以使parse成为具体方法并实现该部分

它应该不为null,如果是,实际上应该返回NullNode.class的实例。

那里。任何实现都可以通过super.parse(node)来引用它。

如果你必须强制子类来实现他们的解析部分,the template method pattern可能会派上用场。您可以在AbstractJsonParser#parse中定义公共部分,并将抽象步骤委托给子类。

© www.soinside.com 2019 - 2024. All rights reserved.