现在的位置: 首页 > 综合 > 正文

java.net.URL各get方法的含义

2013年08月18日 ⁄ 综合 ⁄ 共 2149字 ⁄ 字号 评论关闭

呵呵,隐士研究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

源码如下:

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);
    }

}

 

抱歉!评论已关闭.