1. 程式人生 > 實用技巧 >關於EKT相關知識(類的反射)

關於EKT相關知識(類的反射)

| | reflect

提供類和介面,以獲得關於類和物件的反射資訊

1.實現了反射的類:

Class類:代表一個類。

Field 類:代表類的成員變數(成員變數也稱為類的屬性)。

Method類:代表類的方法。

Modifier類:代表修飾符。

Constructor 類:代表類的構造方法。

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

2.java反射機制:

  1)在Java執行時 環境中,對於任意一個類,能否知道這個類有哪些屬性和方法?

  2) 對於任意一個物件,能否呼叫他的方法?這些答案是肯定的,這種動態獲取類的資訊,以及動態呼叫類的方法的功能來源於JAVA的反射。從而使java具有動態語言的特性。

3.程式碼示例

1)注意事項:

a.執行jdk環境版本:jdk1.8.0_131

b. 編譯工具:Idea 2018 版本

2)Contructor類實現反射:

程式碼示例:

package com.liujie.demo.Demo2;


import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

public class Demo2 {
    public static void main(String[] args)throws
SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException { //反射String類的所有構造方法 Class clz= Student.class; System.out.println("所有構造方法"); //Constructor[] cons=clz.getConstructors();
Constructor[] cons=clz.getDeclaredConstructors(); for (Constructor con : cons) { System.out.println("Constructor構造方法為:"+con+"訪問修飾許可權:"+ Modifier.toString(con.getModifiers())); } //找無參的構造方法 Student s = new Student(); Constructor con = clz.getDeclaredConstructor(); Object obj = con.newInstance(); System.out.println("++++++++++++++++++"); System.out.println(obj); //找帶string,int型別引數的構造方法 Student s = new Student("zhangsan",12) con = clz.getDeclaredConstructor(String.class, int.class); obj = con.newInstance("zhangsan", 12); System.out.println(obj); con = clz.getDeclaredConstructor(String.class); obj = con.newInstance("zhangsi"
); System.out.println(obj); } }

控制檯執行結果:

心得:

  在程式設計師這行,既然你進來了,你就得準備好滿滿的熱情,等待競爭強烈的網際網路企業猛烈的風雨摧殘,

平均程式設計師一萬多的工資畢竟也不是擒手就來的