Java中 反射最需要掌握的几个问题

本文深入讲解Java反射技术,包括如何通过反射操作构造方法、成员方法和成员变量,演示了使用反射初始化对象、调用方法及修改私有字段的过程。掌握反射技术对于理解框架源码至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反射中必须学会的几个用法 : 

假设有下面的 Person 类 : 

public class Person {

    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    
}

 

操作前准备 :

public static void main(String[] args) throws Exception{

        Class c = Person.class;     //获取Class对象

}

1.通过反射,操作构造方法

public static void main(String[] args) throws Exception{

    Class c = Person.class;     //获取Class对象


        /*   操作 构造方法   */
    Constructor constructor = c.getConstructor(String.class, int.class); //获取有参构造方法
    Person person = (Person)constructor.newInstance("灭绝师太",30);//调用构造方法,给属性初始化

2.通过反射,操作成员方法

public static void main(String[] args) throws Exception{

    Class c = Person.class;     //获取Class对象
    /*   操作 成员方法   */
    Method method = c.getMethod("setName", String.class);   //指定 方法名 方法的参数类型
    method.invoke(person,"张三丰");        // 传入 对象 方法的参数
}

3.通过反射,操作成员变量

public static void main(String[] args) throws Exception{

    Class c = Person.class;     //获取Class对象
    /*   操作 成员变量   */
    Field field = c.getDeclaredField("age");    //指定 变量名
    field.setAccessible(true);          //取消权限检查
    field.setInt(person,50);          //传入 对象 变量名

 

学习好反射和注解,才能够看懂框架的源码,框架中用到了大量的反射、注解,如果不学会这两个,只能用框架,而不能看懂它的源码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值