首页 > Java > java教程 > 正文

Java反射可以访问私有字段吗?

Patricia Arquette
发布: 2024-10-28 06:02:02
原创
634 人浏览过

Can Java Reflection Access Private Fields?

Java中通过反射访问私有字段

问题:能否利用Java的反射机制来访问私有字段,比如下面代码片段中的str字段?

<code class="java">public class Test {

   private String str;
   public void setStr(String value) { str = value; }
}</code>
登录后复制

答案:是的,可以通过反射访问私有字段。但是,从不同类访问该字段时,必须授予安全权限,并且必须使用 setAccessible(true)。

考虑以下示例:

<code class="java">import java.lang.reflect.*;

public class Other {

    private String str;
    public void setStr(String value) { str = value; }
}

public class Test {

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

        Other t = new Other();
        t.setStr("hi");
        Field field = Other.class.getDeclaredField("str");
        field.setAccessible(true);
        Object value = field.get(t);
        System.out.println(value);
    }
}</code>
登录后复制

注意: 这种做法通常不被鼓励,因为它违反了原始类作者设定的封装原则。验证检查或对其他字段的依赖可能会被绕过,从而导致不可预测的行为。

以上是Java反射可以访问私有字段吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板