package com.lei01;
import java.lang.reflect.Method;
import com.lei02.FanShe02;
/**
* 测试 java.lang.Class对象的获取和调用方法。
* 通过反射模板可以拿到类的所有信息(类名,方法,运行结果)
*
* @param args
*/
public class FanShe01 {
public static void main(String[] args) {
String path = "com.lei02.FanShe02";
try {
//拿到FanShe02的类模板。
Class clazz = Class.forName(path);//会报错所有要用(try)
//通过类模板拿取这个类的全限定名(包名+类名)
String name = clazz.getName();
//通过类模板拿取这个类的简单名字(类名)
String simpleName = clazz.getSimpleName();
//通过类模板拿取(getId)这个方法
Method m = clazz.getMethod("getId");
//通过类模板拿取(getAge)这个方法
Method a = clazz.getMethod("getAge");
//执行FanShe02这个对象的(getAge)方法,并获取到他的返回值。(ss)
int ss = (int)a.invoke(new FanShe02());
//执行FanShe02这个对象的(getId)方法,并获取到他的返回值。(results)
int results = (int) m.invoke(new FanShe02());
//打印(getAge)的返回的结果
System.out.println(ss);
//打印(getId)的返回结果
System.out.println(results);
//打印通过反射拿到的方法对象。
System.out.println(m);
//打印(FanShe02)类的全限定名(包名+类名)
System.out.println(name);
//打印(FanShe02)类的简单名(类名)
System.out.println(simpleName);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
反射的使用
最新推荐文章于 2023-06-10 09:00:00 发布