在java类中没有setter方法设置值

时间:2016-09-09 12:23:01

标签: java

我在一个没有setter方法的类中有一个列表变量。有没有办法可以为列表对象设置值。

2 个答案:

答案 0 :(得分:3)

如果您在班级本身,如在方法内,并且变量标记为privatepublicprotected,请使用此项:

m_name = value;

如果该字段为public,并且您需要在课外访问,请执行以下操作:

classinstance.m_name = value;

当然,如果您需要在类的实例化中构造变量,那么您需要在构造函数中放置列表的实例化代码。然后,你可以使用这样的反射:

import java.lang.reflect.Field;
ClassName classInstance = new ClassName();
Field member_name = classInstance.getClass().getDeclaredField("private_var_name");

// this is for private scope
member_name.setAccessible(true);

variableName.set(x, /*value*/);

当然,我不建议这样做,因为它肯定会打破封装,它看起来更像是一个黑客而不是干净的代码:

Source

答案 1 :(得分:0)

当属性为public时,您可以像这样访问它。当您的属性为protected时,该类必须与您的类位于同一个包中。

obj.value = newValue;

如果是private,您可以refelction完成。