繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM