在类之间共享变量

时间:2011-05-04 00:20:42

标签: java class variables share

我有一个听起来很愚蠢的问题,但不知道为什么它不起作用。我有2个类,Directory和Map,在Directory类中有一个本地String变量,它接受目录的当前文件夹的名称,并希望将它放在显示图形的Map类的矩形内。将变量放入Map类后,问题是字符串为空。

以下是代码:

public class Directory
{
    public static File directory;   // the directory that we want to use
    public static String dirName = directory.getName();
    public String test = "test";

    public Directory(File directory)
    {
        files = directory.listFiles();
    }    
}

public class Test extends JComponent
{
    Directory dir = new Directory(null);
    public Test()
    {
        JFrame frame = new JFrame("Test");
        frame.setSize(800,600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(this);
        frame.setVisible(true);

    }

    public void paintComponent(Graphics g)
    {
        super.paintComponents(g);

        g.setColor(Color.yellow);
        g.fillRect(10, 10, 100, 100);
        g.drawString(dir.tigka, 10, 20);
    }
}

3 个答案:

答案 0 :(得分:2)

使用(null)实例化Directory对象,然后使用该实例设置String变量。完美地理解了null通过了。

Directory dir = new Directory(null);
String folderName = dir.folderName;

答案 1 :(得分:1)

这是我发现的一个新解决方案(我是初学者),用于为应用程序中的所有类维护一个中心动态变量位置,无论使用相同变量的次数或使用它们的位置和时间。听起来它可能适用于解决方案?

https://stackoverflow.com/questions/17861704/solution-for-sharing-variables-between-classes?noredirect=1#comment26078064_17861704

答案 2 :(得分:-1)

奇怪的问题并且难以评估答案,因为目标正在发生如此大的变化..然而,无法抗拒投入我的几分钱(欧元!)因为我认为NPE的原因还没有发现了

我所指的代码是(如果它在我写作的时候正在改变)

public /* static */ class Directory
{
    public static File directory;   // the directory that we want to use
    public static String dirName = directory.getName();
    public String test = "test";

    public Directory(File directory)
    {
        files = directory.listFiles();
    }    
}    

使用空文件进行实例化似乎是罪魁祸首...但是永远不会到达:第一个NPE抛出来自dirName的静态初始化,它访问静态字段目录,这是...嗯,null

编辑(截至@Eristikos评论):删除静态类修饰符以与原始示例保持同步。