我正在用抽象方法编写一个抽象的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中有没有办法做到这一点?我将有许多具体的实现,我不想每次都检查空值。提前致谢。
您可以使parse
成为具体方法并实现该部分
它应该不为null,如果是,实际上应该返回
NullNode.class
的实例。
那里。任何实现都可以通过super.parse(node)
来引用它。
如果你必须强制子类来实现他们的解析部分,the template method pattern可能会派上用场。您可以在AbstractJsonParser#parse
中定义公共部分,并将抽象步骤委托给子类。