1. 程式人生 > 實用技巧 >Java EKT關鍵技術強化 反射機制

Java EKT關鍵技術強化 反射機制

  • 執行環境:

  JDK8 +IntelliJ IDEA 2018.3


  • jar包連結:

https://files.cnblogs.com/files/papercy/jsoup_jar%E5%8C%85.rar


  • 原始碼:

package com.ChenJiangT.Work1;

import java.util.ArrayList;
import java.util.List;

public class Work1 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        Class clz
= List.class; System.out.println("***************List相關資訊:***************"); System.out.println("類名:"+clz.getName()); System.out.println("包名:"+clz.getPackage()); System.out.println("是否為介面:"+clz.isInterface()); System.out.println("是否為基本型別:"+clz.isPrimitive()); System.out.println(
"是否為陣列:"+clz.isArray()); System.out.println("獲得父類的Class物件:"+clz.getSuperclass()); clz=new ArrayList().getClass(); System.out.println("***************List介面指向ArrayList時的相關資訊:***************"); System.out.println("類名:"+clz.getName()); System.out.println("包名:"+clz.getPackage()); System.out.println(
"是否為介面:"+clz.isInterface()); System.out.println("是否為基本型別:"+clz.isPrimitive()); System.out.println("是否為陣列:"+clz.isArray()); System.out.println("獲得父類的Class物件:"+clz.getSuperclass()); } }
  • 執行效果圖:

  • 原始碼:

package com.ChenJiangT.Work3;

public class Work3 {
public static void main(String[] args) throws ClassNotFoundException{
Class clz;
ClassLoader c1,c11;
System.out.println("1---------------------------------------------");
//得到系統類載入器
c1=ClassLoader.getSystemClassLoader();
System.out.println(c1);

//輸出其父載入器
while (c1!=null){
c11=c1;
c1=c11.getParent();
System.out.println(c11+"的父載入器是:"+c1);
}

System.out.println("2-----------------");
clz=Class.forName("java.lang.Object");
c1=clz.getClassLoader();
System.out.println("載入Object類的類載入器是:" + c1);

System.out.println("3-----------------");
clz=Work3.class;
c1=clz.getClassLoader();
System.out.println("載入當前類的類載入器是:" + c1);
}
}
  • 效果圖:

  • 總結:

    一.在JDK中,主要由以下類來實現Java反射機制,這些類都位於java.lang.reflect包中:

        1).Class類:代表一個類。 Field 類:代表類的成員變數(成員變數也稱為類的屬性)。

        2).Method類:代表類的方法。 Modifier類:代表修飾符。

        3).Constructor 類:代表類的構造方法。

        4). Array類:提供了動態建立陣列,以及訪問陣列的元素的靜態方法。

    二.Class中的常用方法(獲得類的構造方法)

        1).getConstructors():獲得類的所有的public型別的構造方法。

        2).getDeclaredConstructors():獲得類所有的構造方法   

        3)getConstructor(Class[] parameterTypes):獲得類的特定public的構造方法,

        4).parameterTypes 引數指定構造方法的引數型別。

        5).getDeclaredConstructor(Class[] parameterTypes):獲得類指定的所有的構造方法