Gau*_*tam 1 java null android nullpointerexception
我正在使用hashsets,不知怎的,我遇到了NPE.我知道hashset允许空值.所以我试着知道究竟发生了什么,我在java中创建了以下代码(仅用于学习目的)
Java代码 -
public class numbers {
static HashSet<String> s = new HashSet<>();
public static void main(String[] args) {
s.add("a");
s.add(null);
s.add("b");
for(String l:s)
{
System.out.println(l);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它没有给我任何例外.输出将打印到控制台.然后我试着在android中运行相同的代码
Android代码 -
public class MainActivity extends Activity {
HashSet<String> s = new HashSet<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s.add("a");
s.add(null);
s.add("b");
for(String l:s)
{
//System.out.println(l);
Log.i("ExceptionCheck", l);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我运行应用程序.在Log语句中引发空指针异常,我试图读取输出.
任何人都可以解释我的差异吗?
您已null在组中添加了一个,然后打印了值.
您无法将null消息传递给任何Log打印调用,例如Log.i().它将NPE与消息"println需要一条消息".
但是,这样的工作可以确保消息不为null:
Log.i("ExceptionCheck", "" + l);
Run Code Online (Sandbox Code Playgroud)