java反射


#bk1 {background-color: yellow}

* 什么是反射
* 在运行期,可以动态的获取类的信息,创建类的对象以及执行类的方法,获取类的属性的值等等。

  • Class类

    • Class类的对象保存了类的运行时信息,每个Class类对象对应一个类的运行时信息。
  • 获取Class对象的方法有以下三种:

    • Class clazz=Class.forName(String className)
    • Class clazz=String.class
    • String str=new String(“”);Class clazz=str.getClass()
  • 获取Class类的信息:

    • 构造函数:
    • public Constructor<?>[] getConstructors() throws SecurityException ,获取所有的public类型的构造函数
    • public Constructor<T> getConstructor(Class<?>... parameterTypes) *方法,获取以parameterTypes为参数的构造函数
    • 属性:
    • public Field getField(String name),获取属性名称为name的属性。
    • public Object get(Object obj),Field类的方法,用于获取某个字段的值,这个方法是静态时,obj为null;非静态时,传入对象,获取对象的那个字段的值。Class clazz=A.class;Object obj=clazz.newInstance(); Field field=clazz.getField(“name”);field.get(obj);
    • 方法:
    • public Method[] getMethods() throws SecurityException,获取所有公有方法;
    • public Method getMethod(String name, Class<?>... parameterTypes),获取方法名为name ,参数为parameterTypes的公有方法。
    • public Method[] getDeclaredMethods() throws SecurityException,获取所有方法,包括公有、私有、保护,但是不包括基类的方法。
    • public Object invoke(Object obj, Object… args),在运行期动态的执行一个方法。
  • 修饰符:Class、Field、Method、Construct等都有修饰符,所有他们都有public int getModifiers()方法, Modifier.toString(method.getModifiers()) ,这可以转化为public、static这些字符串。
  • 屏蔽private、protected等访问权限,AccessibleObject.setAccessible(boolean flag);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值