[英]Why javax.json containts only interfaces?
来自文档的示例:
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
包含它,但是为什么没有记录呢?
不过没什么大不了的,我已经阅读了接口的详细信息,它显示了所有必需的方法/构造函数/返回类型,现在我知道如何使用这些“类”。
为什么javax.json只包含接口?
因为,有意的是,实现者希望隐藏实现的细节,并允许您仅通过工厂方法(而不是通过new
实例化它们)来创建实例。
那么类JsonArray在哪里? ...但是为什么没有记录?
隐藏在私有包中的某个位置,可能以com.sun
开头。 即使找到它,直接使用它也是非常不明智的,因为它们可能会在下一个jdk安全更新中更改实现,从而破坏任何依赖未记录功能的代码。
Java EE是规范。 它没有实现。 它依靠第三方来实现规范。 javax.json
包是Java EE的一部分(或最终将成为Java EE的一部分)。 因此,包括此jar只会为您提供json api的接口。 您将需要在运行时提供一个实现,以使其起作用。 通常,即使事实上这说起来容易做起来难,您的代码也应该与实现无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.