【发布时间】:2015-06-14 00:26:57
【问题描述】:
我正在为我一直在开发的应用程序加载器使用非字符串类型。作为一个错字,我忘记包含特定 URI 的协议部分。由于 URI 无效,我预计 java 测试会失败...但是此语句似乎有效...
URI uri = URI.create("contacts.addresses.genericAddress")
对我来说,使用点作为方案部分没有标准......我认为方案部分总是需要的?
有人知道为什么吗?
【问题讨论】:
-
如果 Java 代码接受 URI 并不一定意味着 URI 根据 RFC 2396 是有效的。
-
同上。 Java 假定规范暗示了一系列事物,但实际上并不是规范的一部分,因此 Java 比规范允许的要宽松一些。也就是说,您的字符串对我来说看起来像是一个有效的主机名。
-
啊,这里:“由 RFC 2396 中的语法指定,附录 A”和附录 A 允许 URI 成为 相对路径,没有主机名或方案。所以“this.and.that”可能只是像“this.html”这样的文件名(点作为文件元素名是有效的——即,路径段中的 pchars)。
-
@SimeonVisser 重要的是要注意,使用该方法是因为它声明它强制执行正确的约定......我只是没有充分阅读规范以了解它为什么有效。但是java代码确实符合它。