我在使用带有以下代码的Log语句时收到错误 java.lang.NullPointerException:println需要消息
for (Application app : mApplications) {
Log.d("LOG", "********");
Log.d("LOG", app.getName());
Log.d("LOG", app.getArtist());
Log.d("LOG", app.getReleaseDate());
}
但在第二个参数中,如果我在引号之间添加另一个字符串,则错误消失
for(Application app: mApplications){
Log.d("LOG", "******************");
Log.d("LOG","Name: " +app.getName());
Log.d("LOG","Artist: " +app.getArtist());
Log.d("LOG","ReleaseDate: " +app.getReleaseDate());
}
两者有什么区别?
答案 0 :(得分:1)
不同之处在于您已将字符串与null变量连接在一起。
Log
需要非空消息字符串。
或者,这也有效,因为它会打印"null"
但看起来不干净
Log.d("LOG", String.valueOf(app.getName()));
Log.d("LOG", String.valueOf(app.getArtist()));
Log.d("LOG", String.valueOf(app.getReleaseDate()));
答案 1 :(得分:0)
首先,如果您使用的是Log.d,它通常用于调试,这是Log.d d(String tag, String msg, Throwable tr)
的正确语法。为了更好地理解See this
在你的情况下首先你正在使用这个
for (Application app : mApplications) {
Log.d("LOG", "********");
Log.d("LOG", app.getName());
Log.d("LOG", app.getArtist());
Log.d("LOG", app.getReleaseDate());
}
并生成此错误java.lang.NullPointerException: println needs a message
,因为您无法按照Log.d语法规则放置消息。
我希望你明白......