1. 程式人生 > 實用技巧 >在JDK中,主要由以下類來實現Java反射機制

在JDK中,主要由以下類來實現Java反射機制

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

Class類:代表一個類。

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

Method類:代表類的方法。

Modifier類:代表修飾符。

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

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

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;

public class Demo2 { public static void main(String[] args) { Student stu=new Student(); Class clzStu= stu.getClass(); //fields 拿到屬性 Field[] fields = clzStu.getDeclaredFields(); System.out.println("fields"+Arrays.toString(fields)); try { Field name
= clzStu.getDeclaredField("name"); System.out.println(name); } catch (NoSuchFieldException e) { e.printStackTrace(); } //method 得到方法 System.out.println("-------------------------"); Method[] methods = clzStu.getDeclaredMethods(); System.
out.println(Arrays.toString(methods)); try { Method ff = clzStu.getDeclaredMethod("ff", String.class); System.out.println(ff); } catch (NoSuchMethodException e) { e.printStackTrace(); } Method[] methods1 = clzStu.getMethods(); System.out.println(Arrays.toString(methods1)); //Modifiers 訪問修飾符 System.out.println("--------------------------"); int modifiers = clzStu.getModifiers(); System.out.println(modifiers); //Constructor 建構函式 Constructor[] constructors = clzStu.getConstructors(); System.out.println(Arrays.toString(constructors)); try { Constructor anInt = clzStu.getConstructor(); System.out.println(anInt); } catch (NoSuchMethodException e) { e.printStackTrace(); } Constructor constructor = null; try { constructor = clzStu.getConstructor(int.class); } catch (NoSuchMethodException e) { e.printStackTrace(); } System.out.println(constructor); } }

public class Student {
    private String  name;
    private int glod;
    public Student(String name){
        this.name=name;
    }
    public Student(int glod){
        this.glod=glod;
    }
    private Student(String name,int glod){
        this.name=name;
        this.glod=glod;
    }

    @Override
    public String toString() {
        return "name:"+name+",glod:"+glod;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getGlod() {
        return glod;
    }

    public void setGlod(int glod) {
        this.glod = glod;
    }
    public Student(){

    }
    public void ff(String xx){

    }
}

技術總結:

這些類都是在reflect反射包中提供的,這些類有助於我們獲取類以及類中的屬性,方法,訪問修飾符,從而讓我們能夠得到類相關的具體資訊.

只要你不跪著這個世界沒人比你高 ! ! !