为什么我必须导入 InvocationTargetException 因为它在 java.lang 中?
why must I import InvocationTargetException since it's in java.lang?
我试图在我的文件中捕获 InvocationTargetException,但如果我没有明确地为它编写导入语句,我会收到此错误。
因为是java.lang的子包,不知道为什么要导入。
//this is the import statement that worked
import java.lang.reflect.InvocationTargetException;
这是错误信息:
source\DatabaseDemo.java:38: error: cannot find symbol
}catch (NoSuchMethodException | InstantiationException | SQLException | ClassNotFoundException | IllegalAccessException | InvocationTargetException e ){
^
symbol: class InvocationTargetException
location: class DatabaseDemo
Java中没有子包的概念。为了方便起见,我们人类将包视为分层的,因为源代码通常被结构化为目录层次结构。但是,在语言级别上不存在这样的层次结构。换句话说,java.lang.reflect
不是 java.lang
的 "sub-package"。由于只有 java.lang
包的 类 是自动导入的,所以您必须显式导入 InvocationTargetException
.
补充一下@Slaw,
java.
中没有隐含的子包导入
package a;
class A{}
和
package a.b;
class B{}
如果您想在 A 中使用 B,您必须将其显式导入为:import a.b.B;
或 import a.b.*;
希望能有所帮助
我试图在我的文件中捕获 InvocationTargetException,但如果我没有明确地为它编写导入语句,我会收到此错误。
因为是java.lang的子包,不知道为什么要导入。
//this is the import statement that worked
import java.lang.reflect.InvocationTargetException;
这是错误信息:
source\DatabaseDemo.java:38: error: cannot find symbol
}catch (NoSuchMethodException | InstantiationException | SQLException | ClassNotFoundException | IllegalAccessException | InvocationTargetException e ){
^
symbol: class InvocationTargetException
location: class DatabaseDemo
Java中没有子包的概念。为了方便起见,我们人类将包视为分层的,因为源代码通常被结构化为目录层次结构。但是,在语言级别上不存在这样的层次结构。换句话说,java.lang.reflect
不是 java.lang
的 "sub-package"。由于只有 java.lang
包的 类 是自动导入的,所以您必须显式导入 InvocationTargetException
.
补充一下@Slaw, java.
中没有隐含的子包导入package a;
class A{}
和
package a.b;
class B{}
如果您想在 A 中使用 B,您必须将其显式导入为:import a.b.B;
或 import a.b.*;
希望能有所帮助