2 mnshenyanping mnshenyanping 于 2014.07.12 19:11 提问

关于FilenameFilter的一个简单例子,但总是有空指针异常,哪位大侠帮忙看看吧

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);
}

}

2个回答

Sunsam268
Sunsam268   2014.07.14 10:21

Constructor please use the object's parameter.

Could fix it as following:
public JavaTest(String str){
     this.str="."+str;
}
mnshenyanping
mnshenyanping 谢谢!
3 年多之前 回复
zyj905411
zyj905411   2014.07.17 14:58

构造函数中的变量写法不规范,当形参与类属性一致时,需要在属性前面加this,用于区分指定的是哪个变量,楼主上面的代码直接用str="."+str;是不妥的,这样在运行到此段代码时,str指的就是构造函数传过来的变量,因此本身类属性str的值则为null,改成这样就可以了:this.str="." + str;

mnshenyanping
mnshenyanping 谢谢!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!