Qual è la differenza tra opaco e URI gerarchico nel contesto di java networking
?Differenza tra URI opaco e gerarchico?
risposta
Ciò si spiega con il javadoc per la classe URI:
"Un URI è opaco se, e solo se, è assoluta e la sua parte regime specifico non inizia con un carattere di barra ('/') un opaca URI ha uno schema, una parte specifica del sistema, ed eventualmente un frammento;. tutti gli altri componenti sono indefiniti "
i 'componenti' a cui fa riferimento sono i valori. restituito da variGetter.
Oltre a ciò la "differenza" comprende la differenza intrinseca tra URI opachi e gerarchici come da specifiche pertinenti; per esempio.
Quei differencese non sono in alcun modo Java specifica.
Un tipico esempio di uri opaco è un messaggio di posta elettronica mailto:[email protected]
. Differiscono da un uri gerarchico in quanto non descrivono un percorso verso una risorsa.
Pertanto un Uri che è opaco restituisce null
per getPath
.
Alcuni esempi:
public static void main(String[] args) {
printUriInfo(URI.create("mailto:[email protected]"));
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()));
}
Prints:
Uri [mailto:[email protected]]
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]