如何更改另一个类的变量?

Posted

技术标签:

【中文标题】如何更改另一个类的变量?【英文标题】:How do i change a variable of another class? 【发布时间】:2015-07-11 09:44:45 【问题描述】:

我在“MainActivity”类中有一个名为 modeNr 的变量,它受到保护,因此应该可以从包中访问它,但是每当我尝试从同一个包中的类中更改它时,它都会出现错误: “不能从静态上下文中引用非静态字段‘modeNr’”。我使用以下行来更改变量:

MainActivity.modeNr = 1;

关于问题是什么以及如何纠正它的任何想法?

【问题讨论】:

是的,实例化 MainActivity。 cmets 中的答案和下面的答案将有助于实现您想要的。但这种方法是完全不切实际的。你想达到什么目的?我确信有更好的方法来做任何事情。 【参考方案1】:

您正在尝试从静态函数更改非静态成员。您还需要将该变量设为静态或需要创建该类的对象。 让我们假设,

class Test 
 int node = 0;
 static int node1 =10; 



class changeNode 

public static void changeNode()
 new Test().node = somevalue;
//or you need to make node static and change like this
Test.node1 = some value 



【讨论】:

【参考方案2】:

抱歉,我无法发表评论。

您的 modeNr 不是静态变量。你需要像这样定义它:

protected static String modeNr="ddddd"

由于你是通过MainActivity.modeNr修改的,所以这个变量必须是静态变量。

【讨论】:

【参考方案3】:

要消除该错误,您需要将变量定义为静态。

static String modeNr="soemthing"

要访问静态变量,可以通过静态成员或对象访问它。

【讨论】:

【参考方案4】:

只需将modeNr 设为变量static

我认为日志Non-static field 'modeNr' cannot be referenced from a static context 正在解释一切。

【讨论】:

以上是关于如何更改另一个类的变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个更改通知程序类提供程序中使用来自一个更改通知程序类的方法

如何在另一个类的函数中访问一个类的变量?

如何在协议中创建变量属性,其中一个类的 get set 和另一个类的 get

我可以防止私有变量被同一类的其他对象更改吗?

如何从另一个类(java)访问主类的变量?

SQL如何在另一个变量中更改字符串变量