【问题标题】:interpret Scanner close( ) method Java解释 Scanner close() 方法 Java
【发布时间】:2013-01-16 10:54:57
【问题描述】:

当我需要通过方法close() 关闭Scanner 时,我有如下代码,谁能解释我为什么需要检查if(input != null) 请?

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

...

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

【问题讨论】:

    标签: java io java.util.scanner


    【解决方案1】:

    谁能解释一下为什么我需要检查 if(input != null) 吗?

    它只是一个null check,如果输入为空,它会抛出 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>

    【讨论】:

    • 对了,input从文本文件中读取记录,通过input.hasNext(),所以在这个方法中,会返回null,谢谢!
    • @Twocold 不是真正的 Scanner.hasNext() 返回布尔值而不是 Scanner 实例,我的意思是应该返回 Scanner 实例的 doSomething() 可以返回 null
    • 还有一个问题,我是否可以在 someMethod() 而不是 closeFile() 方法中检查 NPE?谢谢
    【解决方案2】:

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

    【讨论】:

    • 情况是我需要通过扫描仪输入一个文本文件并阅读它,然后用我上面提供的代码在最后关闭它,所以......有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多