Java 什么';readInternal和read-in AbstractHttpMessageConverter之间的区别是什么?
例如title,我不明白为什么这个类中需要两个方法 :Java 什么';readInternal和read-in AbstractHttpMessageConverter之间的区别是什么?,java,spring,Java,Spring,例如title,我不明白为什么这个类中需要两个方法 : /** *这个实现简单地委托给{@link#readInternal(类,HttpInputMessage)}。 *但是,未来的实现可能会添加一些默认行为。 */ @凌驾 公共最终T读取(类注意,read是final。扩展类的任何人都不能覆盖它 readInternal是abstract,因此每个扩展类的人都必须重写它(除非他们的类也是抽象的) 这表面上是不必要的;但它为AbstractHttpMessageConverter的维护者提供了
/**
*这个实现简单地委托给{@link#readInternal(类,HttpInputMessage)}。
*但是,未来的实现可能会添加一些默认行为。
*/
@凌驾
公共最终T读取(类注意,read
是final
。扩展类的任何人都不能覆盖它
readInternal
是abstract
,因此每个扩展类的人都必须重写它(除非他们的类也是抽象的)
这表面上是不必要的;但它为AbstractHttpMessageConverter
的维护者提供了改变所有子类行为的机会——例如,在readInternal
之前或之后调用某个方法,而无需将调用before/after的负担传递给扩展类的人
它基本上是类设计的未来证明。或者,正如上面所指出的,它可能是旧代码的残余,而以前在方法中有其他东西。1。)请不要发布代码的图像,而是实际的代码。这使得搜索此方法变得更容易。2.)可能是向后兼容。这些方法在过去可能做了一些不同的事情,但现在做的是相同的事情(或者在以后添加了一个)。为了保持向后兼容性,旧方法只是委托给新方法,这样代码仍然可以使用它。不过它并没有被弃用,所以可能只是为了方便起见。下次我会注意的,谢谢你的支持reminding@sibo.wang好吧,不要删除问题中的图像,而替换为零!就目前而言,这个问题毫无意义。把你需要知道的一切都写进问题中,作为文本。
/**
* This implementation simple delegates to {@link #readInternal(Class, HttpInputMessage)}.
* Future implementations might add some default behavior, however.
*/
@Override
public final T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException {
return readInternal(clazz, inputMessage);
}
// ...
/**
* Abstract template method that reads the actual object. Invoked from {@link #read}.
* @param clazz the type of object to return
* @param inputMessage the HTTP input message to read from
* @return the converted object
* @throws IOException in case of I/O errors
* @throws HttpMessageNotReadableException in case of conversion errors
*/
protected abstract T readInternal(Class<? extends T> clazz, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException;