java反射机制常用方法

13 篇文章 0 订阅

已知一个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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值