java的反射方法

java的反射方法

一个类,被加载到方法区,会创建一个“类对象”,类型是 Class类型

获取类对象
类名.class
String.class
Integer.class
Class.forName("完整类名的字符串")
Class.forName("java.lang.String")

对象.getClass()
str.getClass()
date.getClass()

获得包名类名

c.getPackage().getName()
c.getName()完整类名
c.getSimpleName()简写类名
获得成员变量定义信息
getFields()获得所有可见的成员变量,包括继承的变量
getDeclaredFields()本类定义的所有成员变量,包括私有变量,不包括继承的变量
getField(变量名)
getDeclaredField(变量名) 获得一个变量
获得构造方法定义信息
 getConstructors()所有可见的构造方法
 getDeclaredConstructors()所有的构造方法,包括私有
 getConstructor(参数类型列表)
 getDeclaredConstructor(参数类型列表) 获得一个构造方法
获得方法定义信息
 getMethods()可见的方法,包括继承的方法
 getDeclaredMethods()本类定义的所有方法,包括私有,不包括继承的
 getMethod(方法名,参数列表)
 getDeclaredMethod(方法名,参数列表) 获得一个方法
反射创建对象
 /**执行无参构造*/
Object obj = c.newInstance();
/**执行有参构造*/
//获得构造方
Constructor t = c.getConstructor(int.class, String.class)
//新建实例,并执行这个有参构造
Object obj = t.newInstance(5, "abc")
反射调用成员变量
Field f = c.getDeclaredField(变量名) 获取成员变量
f.setAccessible(true) 使私有变量也能访问
f.set(实例,)  赋值
f.get(实例)取值
反射调用方法
Method m = c.getDeclaredMethod(方法名, 参数类型列表) 获取方法
m.setAccessible(true) 使私有方法可以被调用
Object r = m.invoke(实例, 参数数据) 调用方法
其他

在查看反射相关的Class、Field 、Constructor 等类时,
看到他们都有这样一个方法:getModifiers():
返回此类或接口以整数编码的 Java 语言修饰符。
如需要知道返回的值所代表的意思,
则需要用到 java.lang.reflect.Modifier 这个类,
这个类提供了 static 方法和常量,
可以对类和成员访问修饰符进行解码

int modifiers = field.getModifiers();
//判断是否被变量 transient和static修饰
if (!Modifier.isTransient(modifiers)&& Modifier.isStatic(modifiers))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值