Java面试反射

有如下代码:

public class ReflectTest {

    private String name = "hello";
    
    public String getName() {
        return name;
    }
}

根据上述代码问是否可以修改ReflectTest对象的name值?

答案:可以。我们可以通过反射来修改对象的私有属性值具体代码如下:

public class ReflectTestMain {

    public static void main(String[] args) throws Exception {
        ReflectTest rt = new ReflectTest();
        Class<?> cls = ReflectTest.class;
        Field name = cls.getDeclaredField("name");
        name.setAccessible(true); //在设置私有属性值之前要压制访问权限的检查否则会报java.lang.IllegalAccessException
        name.set(rt, "oneTarget");
        System.out.println(rt.getName());
    }
}

补充知识点:

获得某个类的class对象的四种方式:

  • 通过类名.class的方式
  • 通过类的对象.getClass()的方式
  • 通过Class.forName的方式
  • 如果是基本数据类型的包装类那么还可以通过包装类.TYPE的方式
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,965评论 18 399
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,967评论 0 10
  • 我爸妈生我们生得晚,我们都26了,他俩也56了,年纪越大,精力也越差,平时已经很少做饭,天天外卖了事,我又住外面,...
    老毛zoo阅读 588评论 9 3
  • 文/李海波 戏,是农闲时节村里的大事。 管事的人,老早就商量着请哪个地方的戏。有些地方的戏是以名角的名字叫的,比如...
    邓州李海波阅读 622评论 3 4
  • 一.Android中有哪几种ClassLoader?它们的作用和区别是什么? BootClassLoader加载A...
    亚赛亚阅读 341评论 0 0

友情链接更多精彩内容