呵呵,隐士研究java.net.URL中,源码注释如下:
* @author James Gosling
* @version 1.130, 08/25/04
* @since JDK1.0
哈哈,白胡老头写的,好些个get方法,含义不是很直白,隐士写个小程序把各种值dump出来瞧瞧。输入结果如下:
getAuthority() = so.mdbchina.com
getClass() = class java.net.URL
getContent() = sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@61de33
getDefaultPort() = 80
getFile() = /video/%E7%BE%8E%E5%A5%B3
getHost() = so.mdbchina.com
getPath() = /video/%E7%BE%8E%E5%A5%B3
getPort() = -1
getProtocol() = http
getQuery() = null
getRef() = null
getUserInfo() = null
getClass() = class java.net.URL
getContent() = sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@61de33
getDefaultPort() = 80
getFile() = /video/%E7%BE%8E%E5%A5%B3
getHost() = so.mdbchina.com
getPath() = /video/%E7%BE%8E%E5%A5%B3
getPort() = -1
getProtocol() = http
getQuery() = null
getRef() = null
getUserInfo() = null
源码如下:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Comparator;
public class Test
...{
public static final String METHOD_PREFIX_IS = "is";
public static final String METHOD_PREFIX_GET = "get";
public static final Comparator<Method> METHOD_NAME_COMPARATOR = new Comparator<Method>() ...{
public int compare(Method o1, Method o2) ...{
return o1.getName().compareToIgnoreCase(o2.getName());
}
};
public static void dumpObject(Object o) ...{
Method[] methods = o.getClass().getMethods();
Arrays.sort(methods, METHOD_NAME_COMPARATOR);
for (int i = 0; i < methods.length; ++i) ...{
Method method = methods[i];
String methodName = method.getName();
if (method.getParameterTypes().length == 0
&& (methodName.indexOf(METHOD_PREFIX_IS)==0 || methodName
.indexOf(METHOD_PREFIX_GET)==0)) ...{
try ...{
System.out.println(methodName
+ "() = " + method.invoke(o));
} catch (IllegalArgumentException e) ...{
e.printStackTrace();
} catch (IllegalAccessException e) ...{
e.printStackTrace();
} catch (InvocationTargetException e) ...{
e.printStackTrace();
}
}
}
}
public static void main(String[] argv) throws Exception
...{
java.net.URL u=new java.net.URL("http://so.mdbchina.com/video/%E7%BE%8E%E5%A5%B3");
dumpObject(u);
}
}
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Comparator;
public class Test
...{
public static final String METHOD_PREFIX_IS = "is";
public static final String METHOD_PREFIX_GET = "get";
public static final Comparator<Method> METHOD_NAME_COMPARATOR = new Comparator<Method>() ...{
public int compare(Method o1, Method o2) ...{
return o1.getName().compareToIgnoreCase(o2.getName());
}
};
public static void dumpObject(Object o) ...{
Method[] methods = o.getClass().getMethods();
Arrays.sort(methods, METHOD_NAME_COMPARATOR);
for (int i = 0; i < methods.length; ++i) ...{
Method method = methods[i];
String methodName = method.getName();
if (method.getParameterTypes().length == 0
&& (methodName.indexOf(METHOD_PREFIX_IS)==0 || methodName
.indexOf(METHOD_PREFIX_GET)==0)) ...{
try ...{
System.out.println(methodName
+ "() = " + method.invoke(o));
} catch (IllegalArgumentException e) ...{
e.printStackTrace();
} catch (IllegalAccessException e) ...{
e.printStackTrace();
} catch (InvocationTargetException e) ...{
e.printStackTrace();
}
}
}
}
public static void main(String[] argv) throws Exception
...{
java.net.URL u=new java.net.URL("http://so.mdbchina.com/video/%E7%BE%8E%E5%A5%B3");
dumpObject(u);
}
}