在内部 class 中填充一个文件

fill a file inside a inner class

我是 java 的新手,我什至不确定标题是否有意义。 无论如何,我如何访问 onStatus 中的文件? 我只是想在该函数中写入一个文件,所以在下面的代码中 "T_file.length()" 无法解析 "T_file"。

public static void main (){
    foo("file_name");
}

foo(String fileName)
{
        try{
        final File T_file = new File (fileName);
        final FileWriter fw = new FileWriter(fileName);
        final BufferedWriter bw = new BufferedWriter (fw);
        }catch (IOException e){}

        StatusListener listener = new StatusListener(){     
        public void onStatus(Status status){
            if (T_file.length() > 100){
                    System.out.println ("I have access here");
                  }
            }
        }

}

"T_file.length()" the "T_file" cannot be resolved

这是因为T_file不在onStatus的范围内。您在 foo 方法中声明了 T_file,但随后创建了一个新的 StatusListener,您在其中重新定义了 onStatus,但编译器仍然将 StatusListener 视为另一个class.

解决方法是在您的 class 中声明变量 globally,然后访问它并指定您的 Class.this.T_file 的名称。这里有一个例子:

public class Foo {

    File T_file;

    public static void main (){
        new Foo("file_name");
    }

    Foo(String fileName)
    {

        T_file = new File (fileName);        

        StatusListener listener = new StatusListener(){     
            public void onStatus(Status status){
                if (Foo.this.T_file.length() > 100){
                    System.out.println ("I have access here");
                  }
            }
        };
    }
}

这个例子可以编译。

注意我在StatusListener的末尾添加了一个;,否则无法编译。