1. 程式人生 > >JAVA中的反射()

JAVA中的反射()

父類 運行 返回 type col 利用反射 class cep 值類型

java中取得類對象的方法有三種

1.getClass();但是缺點就是如果沒有類,就會出錯,然後編譯不過

2.class.forname("包+類");//如果沒有類,此方法也不會報錯,但在運行時會出錯

3.包+類.class

利用反射實例化

Class<?> cls = Class.forName("類+包");
Object obj = cls.newInstance();

取得類所在的包:

     getPackage();//返回-- 類型 包名
getPackage().getName();//返回包名

取得類名:

class.getName(); //返回包名稱+類名稱
class.getSimpleName();//返回類名稱

取得父類:

class.getSuperClass.getSimpleName();

取得類接口:

Class<?> cls [] = cls.getInterfaces();
for(...){
    cls[i].getSimpleName();
}

取得構造方法:

java.lang.reflect包下:
getConstructors();//返回所有構造
getConstructor(param);//返回指定構造
constructors.getModifiers();//獲取方法修飾符
constructors.getName();//獲取構造方法名稱
constructors.getParameterCount();//獲取構造方法參數個數
constructors.getParameterTypes();//獲取構造方法的參數類型
constructors.getExceptionTypes();//獲取構造方法的異常類型

取得方法:

getMethods();//獲取類中所有方法
getMethod(name,Class<?>);//獲取指定方法
兩者都返回java.lang.reflect.Method;
getName();//返回方法名稱
getModifiers();//返回方法修飾符
getParameterTypes();//返回參數類型
invoke(object,object...);//調用指定方法,調用時要有實例化對象,然後再設置參數;
getReturnType();//返回值類型
getDeclaredMethods();//獲取本類中的方法

JAVA中的反射()