我正在努力在两个类之间传递数据。在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())。

10-07 12:21