我有一个听起来很愚蠢的问题,但不知道为什么它不起作用。我有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);
}
}
答案 0 :(得分:2)
使用(null)实例化Directory对象,然后使用该实例设置String变量。完美地理解了null通过了。
Directory dir = new Directory(null);
String folderName = dir.folderName;
答案 1 :(得分:1)
这是我发现的一个新解决方案(我是初学者),用于为应用程序中的所有类维护一个中心动态变量位置,无论使用相同变量的次数或使用它们的位置和时间。听起来它可能适用于解决方案?
答案 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评论):删除静态类修饰符以与原始示例保持同步。