一旦拥有了URI对象,你就可以通过调用getAuthority()、getFragment()、getHost()、getPath()、getPort()、getQuery()、getScheme()、getSchemeSpecificPart()和 getUserInfo()方法提取多种组件。你也可以通过调用isAbsolute()确定该URI是绝对的还是相对的,通过调用isOpaque()确定该URI是不透明的还是分层的。如果返回值是true意味着该URI是绝对的或不透明的,如果返回值是false意味着该URI是相对的或分层的。
列表1中的程序用命令行参数建立了一个URI对象,调用URI组件提取方法来检索URI的组件,并调用URI的isAbsolute()和isOpaque()方法把该URI分类为绝对的/相对性和不透明的/分层的。
列表1: URIDemo1.java
输入java URIDemo1命令后,列表1的输出结果如下:
上面的输出显示该URI是绝对的,因为它指定了一个大纲(query),并且该URI是分层的,因为query后面有/符号。
技巧
你应该调用URI的compareTo(Object o)和equals(Object o)来决定URI的次序(为了排序目的)和等同性。你可以参考SDK文档,查阅这些方法的更多信息。
列表1中的程序用命令行参数建立了一个URI对象,调用URI组件提取方法来检索URI的组件,并调用URI的isAbsolute()和isOpaque()方法把该URI分类为绝对的/相对性和不透明的/分层的。
列表1: URIDemo1.java
// URIDemo1.java import java.net.*; class URIDemo1 { public static void main (String [] args) throws Exception { if (args.length != 1) { System.err.println ("usage: java URIDemo1 uri"); return; } URI uri = new URI (args [0]); System.out.println ("Authority = " +uri.getAuthority ()); System.out.println ("Fragment = " +uri.getFragment ()); System.out.println ("Host = " +uri.getHost ()); System.out.println ("Path = " +uri.getPath ()); System.out.println ("Port = " +uri.getPort ()); System.out.println ("Query = " +uri.getQuery ()); System.out.println ("Scheme = " +uri.getScheme ()); System.out.println ("Scheme-specific part = " + uri.getSchemeSpecificPart ()); System.out.println ("User Info = " +uri.getUserInfo ()); System.out.println ("URI is absolute: " +uri.isAbsolute ()); System.out.println ("URI is opaque: " +uri.isOpaque ()); } } |
输入java URIDemo1命令后,列表1的输出结果如下:
query://jeff@books.com:9000/public/manuals/appliances?stove#ge: Authority = jeff@books.com:9000 Fragment = ge Host = books.com Path = /public/manuals/appliances Port = 9000 Query = stove Scheme = query //jeff@books.com:9000/public/manuals/appliances?stove User Info = jeff URI is absolute: true URI is opaque: false |
上面的输出显示该URI是绝对的,因为它指定了一个大纲(query),并且该URI是分层的,因为query后面有/符号。
技巧
你应该调用URI的compareTo(Object o)和equals(Object o)来决定URI的次序(为了排序目的)和等同性。你可以参考SDK文档,查阅这些方法的更多信息。