来自文档的示例:
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
包含它,但为什么不记录?
虽然不是什么大问题,但我已经阅读了接口的详细信息,它显示了所有需要的方法/构造函数/返回类型,现在我知道如何使用这些“类”。
答案 0 :(得分:2)
答案 1 :(得分:1)
为什么javax.json只包含接口?
因为,实际上,实现者希望隐藏实现的细节,并允许您仅通过工厂方法创建实例(而不是通过new
实例化它们)
那么JsonArray类在哪里? ......但为什么不记录?
隐藏在私有包中的某个地方,可能以com.sun
开头。即使您找到它,直接使用它也是非常不明智的,因为它们可能会在下一个jdk安全更新中更改实现,从而破坏依赖于未记录的功能的任何代码。
答案 2 :(得分:1)
Java EE是一个规范;它没有实施。它依赖第三方来实现规范。 javax.json
包是java EE的一部分(或最终将成为其中的一部分)。因此,包含此jar只会为您提供json api的接口。您将需要在运行时提供实现以使其工作。通常,您的代码应该与实现无关,即使事实上这说起来容易做起来难。