package com.example.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
*
* @author 豆米其
* @qq:86858620
*
*/
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
System.out.println("getName");
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
/**
*
* @author 豆米其
* @qq:86858620
*/
public class Reflect {
public static void main(String[] args) throws Exception {
// invokeNotParamConstructor();
invokeHavaParamConstructor();
}
public static void invokeNotParamConstructor() throws Exception {
Class> cls = Class.forName("com.example.reflect.Person");
Object obj = cls.newInstance();
Method med = cls.getMethod("getName");
med.invoke(obj);
}
public static void invokeHavaParamConstructor() throws Exception {
Class> cls = Class.forName("com.example.reflect.Person");
Constructor> cons = cls.getConstructor(String.class, int.class);
Object obj = cons.newInstance("ddd", 23);
Method med = cls.getMethod("getName");
Field field = cls.getDeclaredField("name");
field.setAccessible(true);
Object nameObj = field.get(obj);
System.out.println(nameObj);
med.invoke(obj);
}
}