java反射机制4种_java反射机制

1. 什么是反射

反射java语言中的一种机制,通过这种机制可以动态的实例化对象、读写属性、调用方法

2一切反射相关的代码都从获得类(java.lang.Class)对象开始

2.1 Class.forName(完整类名)

Class clzz=Class.forName("com.zking.refect.Student");

System.err.println(clzz);

结果

class com.zking.refect.Student

2.2 类名.class

Class clzz=Student.class;

System.err.println(clzz);

结果

class com.zking.refect.Student

2.3 对象.getClass()

Student s = new Student();

Class clzz = s.getClass();

System.out.println(clzz);

结果

class com.zking.refect.Student

3. 反射三大作用(java.lang.reflect.*)

3.1 实例化对象

c.newInstance()

Constructor.getConstructor/Constructor.getDeclaredConstructor

注:一定要提供无参构造器

Class clz=Student.class;

//反射调用无参构造方法创建学生对象

Student stu=(Student) clz.newInstance();

System.out.println(stu);

结果

调用无参构造方法创建了一个学生对象

3.2 动态调用方法

Method m;

m.invoke

Student stu=new Student();

Class clz=stu.getClass();

Method m=clz.getDeclaredMethod("hello");

m.invoke(stu);

结果

你好!我是null

3.3 读写属性

Field set/get

Student stu=new Student("s002","zs");

Class clz=stu.getClass();

Field field=clz.getDeclaredField("age");

field.set(stu, 26);

System.out.println(stu);

结果

Student [sid=s002, sname=zs, age=26]

4. 访问修饰符

获取修饰符之后返回的是int类型,并且是一个常量值,

在java中修饰符有11种(6个常用的和5个不常用的)

常用的修饰符为:public private protected friendly abstract final

不常用的修饰符为: native strictfp synchronizend volatile transiend

Student stu=new Student();

Class clz=stu.getClass();

//获取age的修饰符

Field age=clz.getField("age");

System.out.println(age.getModifiers());

结果(1代表的修饰符为public)

1

private String sid;

private String sname;

public Integer age;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值