Java反射

概念:class文件在读取后都会放入Class对象中,一个对象只能放一个类的信息,放入的Class对象称为 类模版对象 注:Java不是动态语言,但具有动态性

操作:

获取class对象

  • 调用对象的getClass()方法,根据实例对象获取,只能用于引用数据类型,无动态
  • 调用类的Class()方法,根据类名获取,可以用于基本数据类型,无动态
  • 调用Class对象的forName(“//全限定名”)根据类型的字符串名称获取,只能有类类型,有动态
通过Class对象探究类的信息
  • 关键字 : Field(属性) Constructor(构造) Method(方法) Declared(被声明的)
  • 探究属性的方法;
getFields() 只能得到所有的公共属性
getField(“//公共属性名”) 只能得到指定的公共属性
getDeclaredFileds()得到所有属性方法
getDeclaredField(”//属性名”)得到指定属性
  • 探究构造的方法
getConstructors()只能得到所有的公共构造
getConstructor(“//公共构造名”) 只能得到指定的公共构造
getDeclaredConstructors()得到所有构造方法
getDeclaredConstructors(”//构造名”)
  • 探究行为的方法
getMethods()只能得到所有的公共行为
getMethod(“//公共方法名”)只能得到指定的公共方法
getDeclaredMethods()得到所有方法
getDeclaredMethod(“//方法名”)得到指定的方法

操作探究出的信息:

根据Constructor对象,产生实例对象
1.调用 Constructor.newInstance(//放入实 参) 可以产生实例对象
2.Student a=(Student)Class.newInstance();注:只能调用公共无参构造
根据Field 对象,对属性进行赋值和取值
1,Field a=Class.getField(//属性名)
2,a.set(对象名,值),要看访问修饰符
根据Method 对象 ,对方法进行调用
a.invoke(//对象,参数)
invoke 调用、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值