【发布时间】:2016-01-26 11:04:46
【问题描述】:
在 python 中,import 语句可以放在文件中的任何地方,甚至在 class 或 if 中。
有没有办法在 Java 中完成同样的事情?我知道不将所有导入都放在文件顶部可能是一种不好的做法,我只是想知道它是否可能以某种方式。
【问题讨论】:
在 python 中,import 语句可以放在文件中的任何地方,甚至在 class 或 if 中。
有没有办法在 Java 中完成同样的事情?我知道不将所有导入都放在文件顶部可能是一种不好的做法,我只是想知道它是否可能以某种方式。
【问题讨论】:
Java 文件中的第一条语句必须是(如果有的话)包语句,然后是导入语句。它们不能放置在其他位置。
但是,可以通过使用完全限定的类名完全跳过导入(我个人不推荐)。您需要在使用短的、不合格的名称的任何地方使用它们。
import my.package.MyClass;
public class Test{
private MyClass instance = new MyClass();
}
可以改写为:
public class Test{
private my.package.MyClass instance = new my.package.MyClass();
}
【讨论】:
【讨论】:
简答:不,这不可能!
import 语句必须位于文件顶部package 语句(如果存在)之后。
您必须知道:您可以在同一文件中的所有类/接口(包括内部/嵌套类)中使用导入的类/接口或静态方法。
【讨论】:
没有办法,除非你算上它可能会弄乱字节码。我想最好的等价物是写下您要使用的完全限定名称。
不知道为什么你会想要。
【讨论】:
import 只是编译器的快捷方式——在类文件中,一切都是完全限定的。
没有。 They need to be at the top,在包声明之后。
一个普通的编译单元由三部分组成,每一部分是 可选:
包声明(第 7.4 节),给出编译单元所属包的完全限定名称(第 6.7 节)。
没有包声明的编译单元是 未命名的包(第 7.4.2 节)。允许来自其他包的类和接口以及类和接口的静态成员的导入声明(第 7.5 节) 使用它们的简单名称来引用。
类和接口的顶级声明(第 7.6 节)。
这并不能很好地传达每个部分的顺序是严格执行的,但形式语法确实清楚地表明了这一点:
OrdinaryCompilationUnit:
[PackageDeclaration] {ImportDeclaration} {TopLevelClassOrInterfaceDeclaration}
【讨论】: