java 全局变量无法存储值[已关闭]

rbl8hiat  于 2022-12-28  发布在  Java
关注(0)|答案(2)|浏览(156)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我尝试从用户那里输入一个String值,并将其存储到一个全局变量中,这个输入在我示例化它的方法中运行良好,但问题是如果我尝试从另一个方法调用全局变量,它的值会被设置回null
下面是输入的代码:

Object select;
select = JOptionPane.showInputDialog(this, "Choisissez le département : ", "Boîte de dialogue",
JOptionPane.QUESTION_MESSAGE, icone, liste, liste[0]);
this.select = select.toString();

此时,如果我在控制台中打印this.select,它的值会正确显示,现在当我从其他地方调用它时:

public void afficherInfos() throws IOException {
//some code
d = new Dep(Integer.parseInt(liste.get(Arrays.asList(d.getDeps()).indexOf(this.getSelect()))));
}

因为indexOf(this.getSelect())返回-1,所以显示IndexOutOfBoundsException,因为程序在数组中找不到它。当我在这个方法中打印this.getSelect()时,控制台显示null,但是我看不出丢失值的可能性,因为它是正确示例化和存储的。

ippsafx7

ippsafx71#

我认为这似乎与提升和类型转换有关,我知道当我们用console打印一些示例时,那个示例用toString()打印,但是你在indexOf中使用这个.getSelect()

ulydmbyx

ulydmbyx2#

全局变量是可以在java程序中的任何地方访问的变量。从技术上讲,全局变量在Java中是不允许的。由于Java是面向对象的,所以一切都是类的一部分。可以声明一个静态变量,它可以对一个类的所有示例都可用。那么,在您的情况下,您可以在indexOf中使用这个.getSelect()。

相关问题