public class Demo {
public static void main(String[] args) {
File dir=new File("D:\\test");
JavaTest filter=new JavaTest("java");
File[] files=dir.listFiles(filter);
for(File a:files){
System.out.println(a.getName());
}
}
}
class JavaTest implements FilenameFilter{
private String str;
public JavaTest(String str){
str="."+str;
}
public boolean accept(File dir, String name) {
return name.endsWith(str);
}
}
Constructor please use the object's parameter.
Could fix it as following:
public JavaTest(String str){
this.str="."+str;
}
构造函数中的变量写法不规范,当形参与类属性一致时,需要在属性前面加this,用于区分指定的是哪个变量,楼主上面的代码直接用str="."+str;是不妥的,这样在运行到此段代码时,str指的就是构造函数传过来的变量,因此本身类属性str的值则为null,改成这样就可以了:this.str="." + str;