首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么javax.json只包含接口?

为什么javax.json只包含接口?
EN

Stack Overflow用户
提问于 2016-09-26 16:45:45
回答 3查看 138关注 0票数 2

javax.json文档

文档中的一个示例:

代码语言:javascript
复制
JsonArray value = Json.createArrayBuilder()
     .add(Json.createObjectBuilder()
         .add("type", "home")
         .add("number", "212 555-1234"))
     .add(Json.createObjectBuilder()
         .add("type", "fax")
         .add("number", "646 555-4567"))
     .build();

但是JsonArray是一个接口,而不是一个类,变量的类型不能是一个接口。那么class JsonArray在哪里?我想包javax.json包含它,但是为什么没有文档化呢?

不过,我已经阅读了接口的详细信息,它显示了所有需要的方法/构造函数/返回类型,现在我知道了如何使用这些“类”。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-26 16:58:34

Java是一种规范;它没有实现。它依靠第三方来实现规范。javax.json包是(或最终将成为) java的一部分。因此,包含此jar只会为您提供到json的接口。您将被要求在运行时提供一个实现以使其工作。通常,您的代码对实现应该是不可知论的,即使事实上,这说起来容易做起来难。

票数 1
EN

Stack Overflow用户

发布于 2016-09-26 16:55:53

您正在阅读的文档是关于JSR 353规范中定义的API的。不同的项目可以为API提供一个实现。例如,此页链接到引用实现。

根森这样的其他项目提供了自己的标准实现。

票数 2
EN

Stack Overflow用户

发布于 2016-09-26 16:56:45

为什么javax.json只包含接口?

因为实现者有意要隐藏实现的细节,并允许您仅通过工厂方法(而不是通过new实例化)创建实例。

那么JsonArray类在哪里?但为什么没有记录呢?

隐藏在私有包中的某个地方,可能从com.sun开始。即使您找到了它,直接使用它也是非常不明智的,因为它们可能会在下一个jdk安全更新中更改实现,从而破坏依赖于无文档化特性的任何代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39708155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档