反射

ava 反射机制

class=class.forName(“”)

class= aa.getClass();    user aa=new user();

class=user.class;

报名.类名$内部类

Class<?> clazz = Class.forName("test.aa$b");

实例化:

Class a=Class.forName("Reflection.Ship");

Class[] c={String.classint.class};    //new Class[] {  String.class, String.class }  

Constructor con=a.getConstructor(c);    con.setAccessible(true); 

Object obj=con.newInstance("asd",12);

c.newInstance(new Outer())  实例化内部类要加类的实例化

获取方法,变量:

c.getDeclaredFields(); 

 fields[i].getType() == By.class

 fields[i].getName()  拿名

 fields[i].get(aa);   拿值  //实例化的aa

c.getDeclaredMethods();

执行方法:

clazz = Class.forName(className);

Object o = clazz.newInstance();

Method[] ms = clazz.getDeclaredMethods();

            for (Method m : ms) {

                if (m.getName().equals(methodName)) {

                    m.invoke(o);

                }

            }

执行方法返回值:

Class cls = Class.forName("com.common.page."+classname); 

Method m = cls.getDeclaredMethod("By",String.class)

String aa= m.invoke(cls.newInstance(),value);

修改变量:

clazz = Class.forName(className);

Field field=clazz.getDeclaredField(filedName);

field.setAccessible(true);         

field.set(filedName,changed);

原文地址:https://www.cnblogs.com/season-xie/p/5330937.html