在Java中可以通过反射访问私有字段字符串吗?例如,获取该字段的值。
class Test
{
private String str;
public void setStr(String value)
{
str = value;
}
}
发布于 2009-10-12 16:50:42
是。
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
方法
发布于 2009-10-12 16:55:27
是的,这是可能的。
您需要使用带有私有字段名称的getDeclaredField方法(而不是getField方法):
Field privateField = Test.class.getDeclaredField("str");
此外,如果您想访问私有字段,则需要将此字段设置为可访问:
privateField.setAccessible(true);
完成后,您可以在field实例上使用get方法来访问str字段的值。
https://stackoverflow.com/questions/1555658
复制相似问题