gpt4 book ai didi

Java:在方法中传递变量为空,但在构造函数中未传递变量

转载 作者:行者123 更新时间:2023-12-01 23:40:31 27 4
gpt4 key购买 nike

我正在努力在两个类之间传递数据。在 ClassOne 中,我根据来自 GUI 的用户输入构建了一个 HashSet,然后我想通过引用将其传递给 ClassTwo。

问题是,当我的方法运行时,变量为空,但在构造函数中却不是。下面是我正在做的事情的简化版本。

ClassOne

public class ClassOne
{
HashSet<String> extensions;

// run this when the button is clicked
class startListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
// run the method to populate the hashset
parseExt();
// create a new class passing HashSet
classTwo = new classTwo(extensions);
}
}

// populates HashSet
public void parseExt()
{
extensions = new HashSet<String>();

extensions.add("foo");
extensions.add("bar");
extensions.add("bat");
}
}

第二类

public class ClassTwo implements Runnable
{
HashSet<String> extensions;

public ChgOwner(HashSet<String> extensions)
{
this.extensions = extensions;
// prints [foo, bar, bat]
System.out.println(this.extensions);
}

public void run()
{
// prints []
System.out.println(this.extensions);
}

想想我做错了什么?

=======

编辑:为了尝试澄清,变量extensions正在通过ClassTwo的构造函数从ClassOne传递到ClassTwo。在构造函数中,我将值分配给 ClassTwo 中的属性,也称为扩展。在 ClassTwo 的构造函数中,我可以打印扩展的值,结果为“[foo, bar, bat]”。但是当在ClassTwo中的run()方法中打印值时,HashSet为空并输出“[]”。

我的问题是为什么 ClassTwo 的“extensions”属性在方法中为空,而不是在构造函数中?

最佳答案

我希望在将哈希集传递给 classtwo 后,classone 会再次修改它(可能调用 clear())。

关于Java:在方法中传递变量为空,但在构造函数中未传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033206/

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