反射

 

反射:

      主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。

反射机制:

      运行状态时,对于任意一个类都能知道这个类的所有属性和方法,对于任意一个对象都能调用它的任意一个方法,这种动态获取的信息以及动态调用对象方法的方式称之为java语言的反射机制

java反射API介绍

下面列出了常用的java反射API

Class类:表示一个类,可以获取类的属性、方法等内容信息

Field类:表示类的属性,可以获取和设置类中属性的值

Method类:表示类的方法,它可以用来获取类中方法的消息,或者执行方法

Constructor类:表示类的构造方法

1.Filed变量举例:

Field fieldY = pt1.getClass().getField("y");

//fieldY的值是多少?是5,错!fieldY不是对象身上的变量,而是类上,要用它去取某个对象上对应的值

System.out.println(fieldY.get(pt1));

Field fieldX = pt1.getClass().getDeclaredField("x");
fieldX.setAccessible(true);//传说中的暴力反射
System.out.println(fieldX.get(pt1));
这里用到了两个方法,getFields()、getDeclaredFields(),它们分别是用来获取反射类中所有公有属性和反射类中所有的属性的方法。另外还有getField(String)和getDeclaredField(String)方法都是用来过去反射类中指定的属性的方法,要注意的是getField方法只能取到反射类中公有的属性,而getDeclaredField方法都能取到。
这里还用到了Field 类的setAccessible方法,它是用来设置是否有权限访问反射类中的私有属性的,只有设置为true时才可以访问,默认为false。另外 Field类还有set(Object AttributeName,Object value)方法,可以改变指定属性的值。
2.Constructor构造方法举例

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值