当前位置:  开发笔记 > 编程语言 > 正文

通过获取FileNotFoundException来搞糊涂

如何解决《通过获取FileNotFoundException来搞糊涂》经验,为你挑选了1个好方法。

我有那段代码,只是得到了FileNotFoundException.

public class Overload {   
public void method(Object o) {     
    System.out.println("Object");   
    }   
public void method(java.io.FileNotFoundException f) {     
    System.out.println("FileNotFoundException");   
    }   
public void method(java.io.IOException i) {     
    System.out.println("IOException");   
    }   
public static void main(String args[]) {     
    Overload test = new Overload();     
    test.method(null);   
    } 
} 

有什么想法为什么会发生?



1> SomeJavaGuy..:

因为它确实访问了最具体的方法,在本例中是 method(java.io.FileNotFoundException f)

来自FileNotFoundException的继承顺序

java.lang.Object -> java.lang.Throwable -> java.lang.Exception -> java.io.IOException -> java.io.FileNotFoundException.

正如您所看到的,IOException继承自Object(在某些时候)使其更具体Object.然后FileNotFoundException更具体IOException.最后,编译器决定它应该使用FileNotFoundExceptionas参数调用该方法.

如果有两种方法具有相同的特定性,那么您的代码将不会编译错误,即存在模糊的方法调用.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有