我正在努力在两个类之间传递数据。在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中的属性,也称为扩展。在ClassTwo的构造函数中,我可以用“ [foo,bar,bat]”的结果打印扩展的值。但是,当在ClassTwo的run()方法中打印值时,HashSet为空并输出“ []”。
我的问题是,为什么ClassTwo的“扩展”属性在方法中为空,但在构造函数中为空?
最佳答案
我希望在将哈希集传递给classtwo之后,classone会再次对其进行修改(也许调用clear()
)。