如何在java中访问非静态私有字段?

时间:2015-10-03 09:05:35

标签: java private non-static

我在包中有一个非静态私有字段,并希望从另一个包访问它但我不知道该怎么做。我搜索过但没有找到任何有用的东西,本网站的其他问题并不是我的问题。

3 个答案:

答案 0 :(得分:3)

你能做到这一点的唯一方法就是通过反思。但它是一个黑客。你真的应该找到另一种方式。

如果你需要这样做,那么它表明另一个包具有设计糟糕的结构。如果您尝试操作的课程属于您自己的课程,则应该考虑更改该代码。

如果你真的需要这样做而且你不能改变其他课程,你可以这样做:

Field f = BadClass.class.getDeclaredField("privateField");
f.setAccessible(true);
f.set(badClassInstance, newValue);

最好的起点可能是反思教程和setAccessible方法。

答案 1 :(得分:2)

为私有字段创建getter和setter方法。

示例:

public void setName ( String name )
{
      this.name = name;
}

public String getName ()
{
     return this.name;
}

答案 2 :(得分:0)

您应该导入非静态私有字段所在的包。 如果要从不同包中的子类访问此字段,可以将“private”修饰符更改为“protected”,这将允许同一项目中的所有包通过继承访问此字段。