在JDK中,主要由以下類來實現Java反射機制
阿新 • • 發佈:2020-08-24
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){
}
}
技術總結:
只要你不跪著這個世界沒人比你高 ! ! !