解释Scanner close()方法Java

时间:2013-01-16 10:54:58

标签: java io java.util.scanner

当我需要按方法Scanner关闭close()时,我有一个如下代码,是否可以解释为什么我需要检查if(input != null)?

Scanner input = new Scanner(new File("System.txt"));

...

Public void closeFile() {
   if(input != null) {
          input.close();
   }
}

2 个答案:

答案 0 :(得分:2)

  

任何人都可以解释为什么我需要检查是否(输入!= null)?

它只是一个null check如果输入为null,它会抛出 NullPointerException

请考虑以下代码:

    Scanner input = new Scanner(new File("System.txt"));
    public void someMethod(){
      input = doSomething(); //say doSomething() returns null
    }
    Public void closeFile()
   {
   if(input != null)
      input.close();
    }

现在,由于输入为空,如果你试图调用close(),它会抛出NPE>

答案 1 :(得分:0)

可以将input设置为空其他地方吗?我注意到作业不是final,因此可以重新分配(给定适当的访问权限)