不透明和分层 URI 之间的区别?
在 上下文中,不透明和分层 URI 之间的区别是什么?java networking
不透明uri的一个典型例子是邮件到url。它们与分层 uri 的不同之处在于,它们不描述资源的路径。mailto:a@b.com
因此,不透明的 Uri 将返回 。null
getPath
一些例子:
public static void main(String[] args) {
printUriInfo(URI.create("mailto:a@b.com"));
printUriInfo(URI.create("http://example.com"));
printUriInfo(URI.create("http://example.com/path"));
printUriInfo(URI.create("scheme://example.com"));
printUriInfo(URI.create("scheme:example.com"));
printUriInfo(URI.create("scheme:example.com/path"));
printUriInfo(URI.create("path"));
printUriInfo(URI.create("/path"));
}
private static void printUriInfo(URI uri) {
System.out.println(String.format("Uri [%s]", uri));
System.out.println(String.format(" is %sopaque", uri.isOpaque() ? "" : "not "));
System.out.println(String.format(" is %sabsolute", uri.isAbsolute() ? "" : "not "));
System.out.println(String.format(" Path [%s]", uri.getPath()));
}
指纹:
Uri [mailto:a@b.com]
is opaque
is absolute
Path [null]
Uri [http://example.com]
is not opaque
is absolute
Path []
Uri [http://example.com/path]
is not opaque
is absolute
Path [/path]
Uri [scheme://example.com]
is not opaque
is absolute
Path []
Uri [scheme:example.com]
is opaque
is absolute
Path [null]
Uri [scheme:example.com/path]
is opaque
is absolute
Path [null]
Uri [path]
is not opaque
is not absolute
Path [path]
Uri [/path]
is not opaque
is not absolute
Path [/path]
这由 URI 类的 javadoc 解释:
“当且仅当 URI 是绝对的,并且其特定于方案的部分不以斜杠字符 ('/') 开头,则 URI 是不透明的。不透明的URI有一个方案,一个特定于方案的部分,可能还有一个片段;所有其他组件都是未定义的。
它所指的“组件”是各种 getter 返回的值。URI
除此之外,“差异”包括根据相关规范,不透明和分层URI之间的固有差异;例如:
这些差异绝不是Java特有的。