Java反射-获取私有方法及私有属性

本文介绍了一个简单的Java类,并通过反射机制获取该类的信息、调用其方法及修改私有属性的值。展示了如何使用Class、Field及Method等API来实现反射操作。

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

先创建一个类:
publicclassUser {
   
   privateStringname="hui";
   
   privateStringtel="tel";

   publicString getName() {
       returnname;
    }

   publicvoidsetTel(Stringtel) {
       this.tel= tel;
    }

   privateString tostring() {
       return"User [name="+ name + ", tel=" + tel + "]";
    }
}

利用反射获取类、调用类的方法、给类的属性赋值:
publicstaticvoidmain(String[]args) {
       try{
           Class clazz=Class.forName("com.hui.base.reflect.User");//获取整个类
            Useruser=(User)clazz.newInstance();//创建此对象的一个实例
           //获取属性
            Field[]fields=clazz.getDeclaredFields();//获取所有属性
            Fieldf=clazz.getDeclaredField("name");//获取指定名称的属性
           f.setAccessible(true);//设置是否允许访问,如果为私有属性需手动设置为true
           f.set(user,"John");//给指定对象的属性赋值
            System.out.println(user.getName());
           //获取方法
            Method[]methods=clazz.getDeclaredMethods();//获取所有方法
            MethodsetTel=clazz.getDeclaredMethod("setTel",String.class);//获取指定名称及参数类型的方法
            Methodm=clazz.getDeclaredMethod("tostring");//获取指定名称没有参数的方法
           //Method m=clazz.getMethod("tostring");//不能获取私有方法
           m.setAccessible(true);//设置是否允许访问
            System.out.println(m.invoke(user));
        }catch(Exceptione) {
           e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值