java - Java10 中的 HttpRequest.BodyProcessor 在哪里

标签 java java-9 http2 java-10

我目前正在通过 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如果您已经在 J​​ava9/10 中使用 HttpClient,可以帮助您在 Java 11 中迁移它的使用。

稍微跑题了:如果你比较一下两个JDK中的源代码,你会发现中的方法有更新BodyPublisher 与其之前的状态相比,在 Java 10 和 Java 11 中都是如此。

关于java - Java10 中的 HttpRequest.BodyProcessor 在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53000199/

相关文章:

java - Android - 动态更改在媒体播放器中播放的文件

java - finally 语句在 try/catch java 中不起作用?

java - 使用 Jlink 在一个平台上为另一个平台创建 Java 运行时镜像

php - HTTP/2 服务器推送无法正常工作,我做错了什么?

java - 设计问题: How to use composition the best

java - 比较 2 个列表中的常见数字

java - Java 9 中 'uses' 指令的用途是什么?

java.lang.reflect.inaccessibleobjectexception 无法使 jdk.internal.loader.classloaders

curl - 如何在 curl 中使用 HTTP/2 的推送功能?

javascript - 使用 Http/2 从 javascript 调用 api