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

时间:2019-04-23 14:40:27

标签: java validation abstract-class

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

    T parse(JsonNode node);

我的目标是验证参数(节点)。它不应为null,如果确实为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中有什么方法可以做到这一点吗?我将有许多具体的实现,并且我不想每次都检查null值。 预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以将parse设为具体方法并实现该部分

  

它不应为null,实际上应该为NullNode.class的实例。

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

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