本文承接上一篇:樂字節Java發射之二:實例化對象、接口與父類、修飾符和屬性
繼續講述Java反射之三:方法、數組、類加載器
一、方法
獲取所有方法(包括父類或接口),使用Method即可。
public static void test() throws Exception {
Class<?> clz = Class.forName("com.shsxt.ref.simple.User ");
//獲取屬性
System.out.println("===============本類方法===============");
// 取得全部公共方法
Method[] methods =clz.getMethods();
for(Method m:methods){
//1、權限
int mod=m.getModifiers();
System.out.print(Modifier.toString(mod)+" ");
//2、返回類型
Class<?> returnType=m.getReturnType();
System.out.print(returnType.getName()+" ");
//3、名字
String name =m.getName();
System.out.print(name +"(");
//4、參數
Class<?>[] para=m.getParameterTypes();
for(int i=0;i<para.length;i++){
Class<?> p =para[i];
System.out.print(p.getName() +" arg"+i);
if(i!=para.length-1){
System.out.print(",");
}
}
//異常
Class<?>[] exce=m.getExceptionTypes();
if(exce.length>0){
System.out.print(") throws ");
for(int k=0;k<exce.length;++k){
System.out.print(exce[k].getName()+" ");
if(k<exce.length-1){
System.out.print(",");
}
}
}else{
System.out.print(")");
}
System.out.println();
}
}
二、 數組
操作數組需要藉助Array類。
//1、創建數組
Object obj =Array.newInstance(int.class, 5);
//2、獲取大小
if(obj.getClass().isArray()){ //3、判斷是否爲數組
System.out.println(Array.getLength(obj));
//4、設置值
Array.set(obj,0, 100);
//5、獲取值
System.out.println(Array.get(obj,0));
}
三、 類加載器
在java中有三種類類加載器:
⑴Bootstrap ClassLoader 此加載器採用c++編寫,一般開發中很少見。
⑵Extension ClassLoader 用來進行擴展類的加載,一般對應的是jrelibext目錄中的類
⑶AppClassLoader 加載classpath指定的類,是最常用的加載器。同時也是java中默認的加載器。 瞭解即可。
public static void main(String[] args) throws Exception {
System.out.println("類加載器 "+ClassLoader.class.getClassLoader().getClass().getName());
}
四、類的生命週期
在一個類編譯完成之後,下一步就需要開始使用類,如果要使用一個類,肯定離不開JVM。在程序執行中JVM通過裝載,鏈接,初始化這3個步驟完成。
類的裝載是通過類加載器完成的,加載器將.class文件的二進制文件裝入JVM的方法區,並且在堆區創建描述這個類的java.lang.Class對象。用來封裝數據。 但是同一個類只會被類裝載器裝載一次。
鏈接就是把二進制數據組裝爲可以運行的狀態。鏈接分爲校驗,準備,解析這3個階段
1、校驗一般用來確認此二進制文件是否適合當前的JVM(版本),
2、準備就是爲靜態成員分配內存空間。並設置默認值
3、解析指的是轉換常量池中的代碼作爲直接引用的過程,直到所有的符號引用都可以被運行程序使用(建立完整的對應關係)
完成之後,類型也就完成了初始化,初始化之後類的對象就可以正常使用了,直到一個對象不再使用之後,將被垃圾回收。釋放空間。當沒有任何引用指向Class對象時就會被卸載,結束類的生命週期。
樂字節原創,歡迎繼續關注 樂字節