我有一个名为HtmlConnect.java的类。 我将变量log声明如下:
public Log log = Log.getInstance();
Log.java文件如下所示:
public class Log {
private static Log instance = null;
private String log;
private Log() {
}
public static Log getInstance() {
if (instance == null) {
instance = new Log();
}
return instance;
}
public String getLog() {
return log;
}
public void appendLog(String message) {
this.log.concat(message+"\n");
}
}
所以当我打电话时
log.appendLog("TestLog");
我总是得到一个nullpointer异常。为什么是taht?
答案 0 :(得分:7)
您忘记初始化log
成员字段。你需要在构造函数中完成它。
答案 1 :(得分:5)
您需要在构造函数中初始化日志变量。
private Log() {
log = "";
}
答案 2 :(得分:1)
内部log.appendLog(“TestLog”);使用String是String并且未初始化。
替换
private String log;
用
private String log = new String();
答案 3 :(得分:0)
更简单的解决方案就是这样。
public enum Log {;
private static final StringBuilder LOG = new StringBuilder();
public static synchronized void append(String message) {
LOG.append(message).append("\n");
}
public static synchronized String getString() {
return LOG.toString();
}
public static synchronized String getStringAndClear() {
String s = LOG.toString();
LOG.setLength(0);
return s;
}
}
你可以用
打电话Log.append("Hello");
Log.append("World");
String lines = Log.getStringAndClear();