反射机制
它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。利用class进行反编译,查询java原始文件的数据。
Method method=getClass().getMethod(String name,方法参数);//通过反射找到对应方法
method.invoke(对象,方法参数);
public void name(Object... obj){}//动态参数 参数内部使用数组
Class class=ClassforName("类名地址");//获取class方法一
Area a=new Area;//创建对象
Class class=a.getClass();//获取class方法二
Class class=Area.Class();//获取class方法三
Modifier.toString(class.getModifiers());//获取类的修饰符
class.getName();//获取类全路径
class.getSimpleName();//只获取类名
//获取类里面的变量
for (Field field : clas.getDeclaredFields()) {
//获取当前属性的修饰符
System.out.print(Modifier.toString(field.getModifiers())+" ");
//获取当前属性的类型
System.out.print(field.getType().getSimpleName()+" ");
//获取属性名
System.out.println(field.getName());
};
//获取类里面的方法
for (Method method : clas.getDeclaredMethods()) {
//返回方法的修饰符
System.out.print(Modifier.toString(method.getModifiers())+" ");
//返回方法的返回类型
System.out.print(method.getReturnType().getSimpleName()+" ");
//返回方法的方法名 System.out.print(method.getName()+" (");
//获取方法的参数
for (Parameter param : method.getParameters()) {
//获取参数的类型
System.out.print(param.getType().getSimpleName()+" ");
//参数名 System.out.print(param.getName()+" , ");
}
System.out.println(")");
}
System.out.println();
//执行方法 Object调用的对象 arg0方法执行所需的参数
//method.invoke(Object,arg0...);
//通过反射创建对象 Object o = clas.newInstance();
//获取构造函数
for (Constructor cons : clas.getConstructors()) {
//返回方法的修饰符
System.out.print(Modifier.toString(cons.getModifiers())+" ");
//返回方法名
System.out.print(cons.getName()+" ");
//获取方法的参数
for (Parameter param : cons.getParameters()) {
//获取参数的类型
System.out.print(param.getType().getSimpleName()+" ");
//参数名
System.out.print(param.getName()+" , ");
}
//执行构造方法 可以带参数 参数是动态参数
//Object o = cons.newInstance(initargs)
System.out.println();
};
//获取当前类实现过哪些接口
Class [] classes = clas.getInterfaces();
//获取当前类继承过哪个类
Class cl = clas.getSuperclass();
//包名
Package pack = clas.getPackage();