通过提供与
pw类中的字段同名的参数,可以“遮蔽”
openPrintWriterStream()方法中的pw变量。请参见http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html的“参数名称”部分:
参数可以与类的字段之一具有相同的名称。
如果是这种情况,则称该参数遮蔽了该字段。阴影字段会使您的代码难以阅读,并且通常仅在设置特定字段的构造函数和方法中使用。
有几种方法可以解决此问题:
正如matt forsythe所建议的那样,请退出将PrintWriter作为openPrintWriterStream()的参数传递,然后仅当它为null时才懒惰地构造它。
在
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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)