使用java反射获取类中的方法
代码:
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class ReflectTest06 {
public static void main(String[] args) throws ClassNotFoundException {
Class c = Class.forName("cn.wuquejs.reflect.User");
//获取类中所有方法
Method[] method = c.getDeclaredMethods();
//反编译将User类中的方法打印
StringBuilder sb = new StringBuilder();
sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() + "{\n");
for(Method m : method) {
sb.append("\t");
//方法的修饰符
sb.append(Modifier.toString(m.getModifiers()) + " ");
//方法的返回值类型
Class type = m.getReturnType();
sb.append(type.getSimpleName() + " ");
//方法名
sb.append(m.getName());
sb.append("(");
Class[] param = m.getParameterTypes();
for(int i=0; i<param.length; i++) {
if(i == param.length -1) {
sb.append(param[i].getSimpleName());
}else {
sb.append(param[i].getSimpleName());
sb.append(",");
}
}
sb.append(")");
sb.append("{}");
sb.append("\n");
}
sb.append("}");
System.out.println(sb.toString());
}
}
User类中的代码:
import java.util.Date;
public class User {
public void m1() {
}
public static void m2() {
}
public String m3() {
return "";
}
public void m4(int i, String s) {
}
}
运行结果:
代码分析:
- 根据反编译获取到类
Class c = Class.forName("cn.wuquejs.reflect.User");
- 获取到类中的所有方法
Method[] method = c.getDeclaredMethods();