目前我有一个类正在调用另一个类的静态方法。我想要做的是让静态方法改变调用类的变量,这可能吗?
示例代码:
public class exClass {
private int aVariable;
public exClass() {
othClass.aMethod();
}
}
public class othClass {
static void aMethod() {
// stuff happens, preferably stuff that
// allows me to change exClass.aVariable
}
}
所以我想知道的是,如果有办法访问调用othClass的exClass实例的aVariable。显然,除了使用return语句。
答案 0 :(得分:5)
如果aClass
没有公开该变量,则不会。这就是封装和信息隐藏的内容:如果类的设计者将变量设为私有,那么只有拥有它的组件才能修改或访问它。
当然,Java中一个肮脏的小秘密就是反射可以让你绕过任何私人限制。
但你不应该诉诸于此。你应该适当地设计你的课程并尊重他人的设计。
答案 1 :(得分:3)
您可以将this
作为参数传递给第二个函数。
public class exClass {
public int aVariable;
public exClass()
{
othClass.aMethod(this);
}
}
public class othClass{
static void aMethod(exClass x)
{
x.aVariable = 0; //or call a setter if you want to keep the member private
}
}
答案 2 :(得分:0)
你应该在othClass中为静态方法提供exClass的实例,如othClass.aMethod(this),然后你就可以改变那个实例的变量,或者如果你不需要实例就把变量设为静态