1.创建Student类用于测试
package com.maoqi.test01;
public class Student {
public String name;
private int age;
public Student() {
}
public void run(String name){
System.out.println(name+"在跑步");
}
private void talk(int age){
System.out.println("没满"+age+"岁");
}
}
2.获取Class对象的三种方式(推荐第三种)
package com.maoqi.test01;
public class Main51 {
public static void main(String[] args) {
Student student = new Student();
Class aClass = student.getClass();
System.out.println(aClass);
Class bClass = Student.class;
System.out.println(bClass);
try {
Class cClass = Class.forName("com.maoqi.test01.Student");
System.out.println(cClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
3.获取公有属性并调用
package com.maoqi.test01;
import java.lang.reflect.Field;
public class Main52 {
public static void main(String[] args) throws Exception {
Class aClass = Class.forName("com.maoqi.test01.Student");
Object o = aClass.newInstance();
Field name = aClass.getField("name");
name.set(o,"李雷");
System.out.println("我是"+name.get(o));
}
}
4.获取私有属性并调用
package com.maoqi.test01;
import java.lang.reflect.Field;
public class Main53 {
public static void main(String[] args) throws Exception{
Class aClass = Class.forName("com.maoqi.test01.Student");
Object o = aClass.newInstance();
Field age = aClass.getDeclaredField("age");
age.setAccessible(true);
age.set(o,18);
System.out.println("刚满"+age.get(o)+"岁" );
}
}
5. 获取公有方法并调用
package com.maoqi.test01;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Main54 {
public static void main(String[] args) throws Exception {
Class aClass = Class.forName("com.maoqi.test01.Student");
Object o = aClass.newInstance();
Method run = aClass.getMethod("run",String.class);
run.invoke(o,"李雷");
}
}
6.获取私有方法并调用
package com.maoqi.test01;
import java.lang.reflect.Method;
public class Main55 {
public static void main(String[] args) throws Exception{
Class aClass = Class.forName("com.maoqi.test01.Student");
Object o = aClass.newInstance();
Method talk = aClass.getDeclaredMethod("talk", int.class);
talk.setAccessible(true);
talk.invoke(o,18);
}
}