首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中是否可以通过反射访问私有字段

在Java中是否可以通过反射访问私有字段
EN

Stack Overflow用户
提问于 2009-10-12 16:45:25
回答 2查看 140.6K关注 0票数 106

在Java中可以通过反射访问私有字段字符串吗?例如,获取该字段的值。

代码语言:javascript
复制
class Test
{
   private String str;
   public void setStr(String value)
   {
      str = value;
   }
}
EN

回答 2

Stack Overflow用户

发布于 2009-10-12 16:50:42

是。

代码语言:javascript
复制
  Field f = Test.class.getDeclaredField("str");
  f.setAccessible(true);//Very important, this allows the setting to work.
  String value = (String) f.get(object);

然后使用field对象获取该类实例上的值。

请注意,get方法通常会让人感到困惑。您有字段,但没有对象的实例。您必须将其传递给get方法

票数 55
EN

Stack Overflow用户

发布于 2009-10-12 16:55:27

是的,这是可能的。

您需要使用带有私有字段名称的getDeclaredField方法(而不是getField方法):

代码语言:javascript
复制
Field privateField = Test.class.getDeclaredField("str");

此外,如果您想访问私有字段,则需要将此字段设置为可访问:

代码语言:javascript
复制
privateField.setAccessible(true);

完成后,您可以在field实例上使用get方法来访问str字段的值。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1555658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档