[英]How to declare a variable in a method as static (java)
我正在创建使用多个类的加密/解密程序。 我有一个类是UI,并使用带有文件选择器的JFrame表单,而另一个类则对选定的文件进行加密/解密。 当我尝试使用在加密类的UI类中声明的java.io.File变量时遇到问题。
文件选择器代码:
public static void actionEncrypt() {
encrypt = true;
int retVal = selectFile.showOpenDialog(null);
if (retVal == selectFile.APPROVE_OPTION) {
java.io.File file = selectFile.getSelectedFile();
System.out.println(file);
Crypt.encrypt();
}
}
变量声明代码:
public static boolean encrypt;
public static java.io.File file;
文件读取代码:
public static void encrypt() {
System.out.println(MainUI.file);
try {
Scanner filescan = new Scanner(MainUI.file);
int count = 0;
while (filescan.hasNextLine()) {
count++;
filescan.nextLine();
}
} catch (FileNotFoundException e) {
System.out.println("File not found!");
}
}
当我运行此代码时,我得到一个NullPointerException
因为在文件读取代码运行时File变量的值为null。 这是因为在变量声明代码中将其声明为静态的,该代码覆盖了在actionEncrypt
方法中声明的值。 如果不将变量设为静态,则当我尝试从另一个类访问它时会得到“ Cannot find symbol
。 但是,我无法在actionEncrypt
方法actionEncrypt
变量声明为static,因为它给我一个illegal start of expression
。 有谁知道如何在方法中将变量声明为静态变量而不隐藏字段,或在其他类中使用File变量的任何其他方式?
提前致谢,
圣地亚哥
我想我在您的代码中看到了错误。
更改以下行,以便您改为初始化MainUI.file
。 当前,您正在创建一个名为file
的局部变量,并将其初始化,而不是MainUI.file
,这可能是您打算初始化的。
java.io.File file = selectFile.getSelectedFile();
替换为。
MainUI.file = selectFile.getSelectedFile();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.