java反射机制常用方法

已知一个Person类。

1、获取类变量

//第一种,任何一个类都有一个隐含的静态成员变量class
    Class c1 = Person.class;
//第二种,已经知道该类的对象,通过getClass()获得

    Class c2 = person.getClass();

//第三种,Class类的forName()方法

    Class c3 = Class.forName("Person");

2、创建java对象实例:

Person personA = new Person(); //直接new一个实例

Person personB = Person.class.newInstance(); //通过newInstance()方法获得Person的实例  

Class.forName("包名+类名").newInstance(); //需要注意的是,在使用newInstance()方法的前提是该类必须要有无参构造方法

3、其他常用方法

Class c = Class.forName("包名+类名");

//获取类的名称

    c.getName();

//getMethods方法获得所有public的方法,包括继承而来

    Method[] ms = c.getMethods();

//getDeclaredMethods是获取该类自己的声明的方法

    Method[] ms = c.getMethods();

//得到方法的返回值类型的类类型     Class returnType = ms[i].getReturnType();

//得到方法的名称   ms[i].getName();

//获取参数类型      Class[] paramTypes = ms[i].getParameterTypes();

//获取类中属性   

Field[] fs = c.getDeclaredFields();

for(Field field:fs) {

    //得到成员变量类型的类类型

    Class fieldType = field.getType();

    String typeName = fieldType.getName();

    //得到成员变量的名称

    String fieldName = field.getName();

}

//获取构造方法列表

Constructor[] cs = c.getConstructors();

Constructor singleCs = cs[i];

//获取构造函数参数列表----->参数列表的参数类型

  Class[] paramType = constructor.getParameterTypes();

  Class class = paramType[i];

  class.getName();

方法的反射操作:

a.通过对象获取到类或者其他方式获取到类

    Class c = 对象引用.getClass();

b.获取到方法

Method m = c.getDeclaredMethod("myPrint");     //参数:方法名

c.使用invoke调用方法

//方法的反射操作

//对象.myPrint();方法的反射操作,用m来进行方法调用和前者效果一致

Object obj = m.invoke(对象引用,方法参数);                //如果方法有返回值返回值,没有就null

发布了46 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fengwuJ/article/details/82859348