gpt4 book ai didi

java - 如何将方法中的变量声明为静态(java)

转载 作者:行者123 更新时间:2023-12-01 12:54:42 26 4
gpt4 key购买 nike

我正在创建一个使用多个类的加密/解密程序。我有一个类是 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 方法中声明的值。如果我不将变量设为静态,当我尝试从其他类访问它时,我会收到找不到符号。但是,我无法在 actionEncrypt 方法中将变量声明为静态,因为它给了我一个非法的表达式开始。有谁知道如何在不隐藏字段的情况下将方法中的变量声明为静态变量,或者以任何其他方式在另一个类中使用 File 变量?

提前致谢,

圣地亚哥

最佳答案

我想我在您的代码中看到了错误。

更改以下行,以便初始化 MainUI.file。目前,您正在创建一个名为 file 的局部变量,并初始化该变量,而不是您可能想要初始化的 MainUI.file

    java.io.File file = selectFile.getSelectedFile();

将其替换为。

    MainUI.file = selectFile.getSelectedFile();

关于java - 如何将方法中的变量声明为静态(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com