我正在研究在两个类之间传递数据。在 ClassOne 中,我基于来自 GUI 的用户输入构建了一个 HashSet,然后我想通过引用将其传递给 ClassTwo。
问题是我的方法在运行时变量为空,但在构造函数中却没有。下面是我正在做的简化版本。
一级
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);
}
关于我做错了什么的想法?
=======
编辑:为了尝试澄清,变量扩展是通过 ClassTwo 的构造函数从 ClassOne 传递到 ClassTwo 的。在构造函数中,我将值分配给 ClassTwo 中的属性,也称为extensions。在 ClassTwo 的构造函数中,我可以打印结果为“[foo, bar, bat]”的扩展值。但是在 ClassTwo 中打印 run() 方法中的值时,HashSet 为空并输出“[]”。
我的问题是为什么 ClassTwo 的“扩展”属性在方法中是空的,而在构造函数中却不是?