简单的记录器类,但是抛出空指针异常?

简单的记录器类,但是抛出空指针异常?,第1张

简单的记录器类,但是抛出空指针异常?

通过提供与

pw
类中的字段同名的参数,可以“遮蔽”
openPrintWriterStream()方法中的pw变量。请参见http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html的“参数名称”部分:

参数可以与类的字段之一具有相同的名称。
如果是这种情况,则称该参数遮蔽了该字段。阴影字段会使您的代码难以阅读,并且通常仅在设置特定字段的构造函数和方法中使用。

有几种方法可以解决此问题:

  1. 正如matt forsythe所建议的那样,请退出将PrintWriter作为openPrintWriterStream()的参数传递,然后仅当它为null时才懒惰地构造它。

  2. DDHLogger(String filePath, String yourfilename)
    构造函数中初始化PrintWriter ,因为您拥有构造PrintWriter所需的所有信息,如下面的代码示例所示。

第二种方法允许您通过删除对的所有调用来清理代码

openPrintWriterStream(pw)

public DDHLogger(String filePath, String yourfilename) {    System.out.println("filePath: " + filePath);    System.out.println("yourfilename: " + yourfilename);     //String fileName = "C:\Users\home-1\Desktop\" + yourfilename;     String fileName = filePath + yourfilename;     System.out.println("fileName::--> " + fileName);    // file = new File(fileName);//Creates the file     file = new File(fileName);//Creates the file     System.out.println("file: " + file);     try {        fw = new FileWriter(file, true);        //INSTANTIATE PRINTWRITER HERE        pw = new PrintWriter(fw);    } catch (IOException e) {        e.printStackTrace();    }//allows append to the file without over writing. The TRUE keyword is used for append}

最后,删除

DDHLogger()
或将其设为私有,因为同一包中的类仍可以使用它来创建DDHLoggers,而没有必要的
File
FileWriter
,将来可能会导致NullPointerExceptions。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5506653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存