在内部 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
的末尾添加了一个;
,否则无法编译。
我是 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
的末尾添加了一个;
,否则无法编译。