在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反射包中提供的,這些類有助於我們獲取類以及類中的屬性,方法,訪問修飾符,從而讓我們能夠得到類相關的具體信息.

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM