Java --- 反射 Reflection 的基本使用介绍

    反射(Reflection) 是Java 的特征之一,它允许运行中的Java 程序获取自身的信息,并且可以操作类或对象的内部属性。小编第一次用反射还是在上家公司,做客户信息存储时用的。不知诸位有没有用到反射,其实也不难。下面,小编演示一下反射的基本操作。

 public class ReflectTest {

 @Test
    public void test1() throws Exception {
        //1,获取运行时类的Class
        Class<Person> aClass = Person.class;
        //2,获取运行时类的实例
        Person person = aClass.newInstance();

        //3,获取指定public属性
        Field name = aClass.getDeclaredField("name");
        //5,属性赋值
        name.set(person,"ppkk");
        System.out.println(person);

        //6,获取指定public方法
        Method show = aClass.getDeclaredMethod("show");
        //调用方法
        show.invoke(person);

        //7,获取指定private属性
        Field age = aClass.getDeclaredField("age");
        //private 属性,此处需要设置 setAccessible(true)
        age.setAccessible(true);
        age.set(person,18);
        System.out.println(person);

        //8,获取指定private方法
        Method tell = aClass.getDeclaredMethod("tell");
        //private 方法,此处需要设置 setAccessible(true) 可访问
        tell.setAccessible(true);
        //调用方法
        tell.invoke(person);
    }
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {

    public String name;
    private int age;

    public void show() {
        System.out.println("show...");
    }

    private void tell() {
        System.out.println("tell...");
    }
}

输出:

D:\jdk\jdk1.8.0_171\bin\java.exe
Person(name=ppkk, age=0)
show...
Person(name=ppkk, age=18)
tell...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮克克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值