совместное использование переменных между классами - PullRequest
2 голосов
/ 04 мая 2011

У меня проблема, которая звучит глупо, но я не знаю, почему она не работает. У меня есть 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 ]

2 голосов
/ 04 мая 2011

Вы создали экземпляр объекта Directory с помощью (null), а затем использовали этот экземпляр для установки переменной String. Имеет полный смысл, что ноль проходит, хотя.

Directory dir = new Directory(null);
String folderName = dir.folderName;
1 голос
/ 25 июля 2013

Это новое решение, которое я обнаружил (я новичок) для поддержки одного центрального, динамического расположения переменных для всех классов в приложении, независимо от того, сколько раз используются одни и те же переменные, где и когда они используются. Похоже, это может относиться к решению?

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

0 голосов
/ 04 мая 2011

странный вопрос и трудно оценить ответы, так как цель меняется очень сильно .. тем не менее, я не могу удержаться и от того, чтобы бросить мои пару центов (евро!), Потому что я думаю, что причина для NPE еще неspotted

Код, на который я ссылаюсь, (на случай, если он меняется во время записи)

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

Edit (по состоянию на комментарий @Eristikos): удален модификатор статического класса, чтобы оставаться в синхронизациис оригинальным примером.

...