栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

通过提供与

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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号