gpt4 book ai didi

java - 从java中的另一个类访问变量

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:34 25 4
gpt4 key购买 nike

我有这样一个类:

MainActivity.java

public class MainActivity extends FragmentActivity {
/* I removed other methods */

public Map<String, Conversation> conversationsMap = new LinkedHashMap<>();
}

Connection.java

public class Connection {
/* I removed other methods */

public class TestMessageListener implements MessageListener {
MainActivity mainClass;

public void someMethod() {
mainClass.conversationsMap.get("test"); /// This line is returning nullpointer exception
}
}
}

为什么我不能从另一个类访问 conversationsMap

最佳答案

MainActivity mainClass; 是嵌套类 TestMessageListener 的一个字段,因此如果您不初始化它,它将使用默认值初始化,引用为 null 这意味着

mainClass.conversationsMap.get("test");

将尝试在 null 上调用 conversationsMap.get("test"),但由于 null 没有任何字段或方法,您将收到 NullPointerException。

通常要解决此类问题,您可以使用新实例自己初始化 mainClass

MainActivity mainClass = new MainActivity();

但可能更好的选择是让用户或其他进程将已创建的实例传递给 TestMessageListener 类。为此,您可以创建 setter,

public void setMainActivity(MainActivity mainClass){
this.mainClass = mainClass;
}

或者在TestMessageListener构造函数中接受MainActivity

public TestMessageListener(MainActivity mainClass){
this.mainClass = mainClass;
}

我不是 Android 开发人员,所以他们可以提供更好的方法,比如从某种已注册的 Activity 容器中获取此实例,但在这种情况下我帮不了你。

关于java - 从java中的另一个类访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com