我目前正在通过 this 学习 Java9~10 中的 HTTP/2 客户端.
Java 9 确实有 HttpRequest.BodyProcessor
接口(interface),而 Java 10 没有 HttpRequest.BodyProcessor
,而是有 HttpRequest.BodyPublisher
.两个界面都很相似。
为什么 Java 更改接口(interface)的名称?我认为向后兼容性被忽略了。
最佳答案
HttpClient
has been a part of an incubator module使用 Java 9 和 10。所以人们看到的是更多的原型(prototype)作品,虽然理想情况下不应有太大变化,但不能保证相同。
来自孵化器JEP#Incubator Modules :
An incubating feature is an API of non-trivial size that is under development for eventual inclusion in the Java SE Platform, or the JDK, but is not yet sufficiently proven.
如果您想使用标准模块,您可以在 Java 11 中使用它,它被命名为 java.net.http
. [注意它被标记为自 Java 11 而不是 9 或 10]
The jdk.incubator.httpclient module not found in Java11如果您已经在 Java9/10 中使用 HttpClient
,可以帮助您在 Java 11 中迁移它的使用。
稍微跑题了:如果你比较一下两个JDK中的源代码,你会发现中的方法有更新BodyPublisher
与其之前的状态相比,在 Java 10 和 Java 11 中都是如此。
关于java - Java10 中的 HttpRequest.BodyProcessor 在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53000199/