Java import语句不在文件的开头

时间:2016-01-26 11:04:46

标签: java syntax import

在python中,import语句可以放在文件的任何地方,甚至可以放在中,也可以放在 if 中。

有没有办法在 Java 中完成同样的事情?我理解,不将所有导入放在文件的顶部可能是一种不好的做法,我只是想知道它是否可能以某种方式存在。

5 个答案:

答案 0 :(得分:4)

Java文件中的第一个语句必须是(如果有的话)package语句,后跟import语句。

它们不能放在其他位置。

但是,可以使用替代方式(我个人不建议)

import myPackage.MyClass;

public class Test{
  private MyClass instance = new MyClass();
}

可以改写为:

public class Test{
  private myPackage.MyClass instance = new myPackage.MyClass();
}

不再需要import语句(如果你需要在一个Java文件中使用两个具有相同名称的类,它会派上用场),但你把整个路径放到类中,包括声明/初始化中的包变量。

通过这种方式,它们可以在代码中的任何位置。

答案 1 :(得分:2)

根据文件here

  

要将特定成员导入当前文件,请在任何类型定义之前在文件开头放置import语句,但在package语句之后(如果有)。

所以似乎不可能。

答案 2 :(得分:1)

简答:不,这不可能!

导入语句必须位于package语句后的文件顶部(如果存在)。

您必须知道:您可以在同一文件的所有类/接口中使用导入的类/接口或静态方法,包括内部/嵌套类。

答案 3 :(得分:0)

没有办法,除非你把数字代码弄得乱七八糟。我认为最好的等价物是写出你想要使用的完全限定名称。

不知道为什么你会这么想。

答案 4 :(得分:0)

没有。 They need to be at the top,在包声明之后。

<块引用>

一个普通的编译单元由三部分组成,每一部分都是 可选:

  • 包声明(第 7.4 节),给出编译单元所属包的完全限定名称(第 6.7 节)。

    没有包声明的编译单元是的一部分 未命名的包(第 7.4.2 节)。

  • 允许来自其他包的类和接口以及类和接口的静态成员的导入声明(第 7.5 节) 使用它们的简单名称指代。

  • 类和接口的顶级声明(第 7.6 节)。

这并不能很好地传达每个部分的顺序是严格执行的,但正式的语法确实清楚地表明了这一点:

OrdinaryCompilationUnit:
    [PackageDeclaration] {ImportDeclaration} {TopLevelClassOrInterfaceDeclaration}