在Java上对导入分组

时间:2019-10-31 06:19:59

标签: java import

Java是否支持对导入进行分组,如下所示:

import package.{Class1,Class2}

我知道*运算符会导入子包,但我想导入特定的包。


Rust或某些现代语言中受支持,如下所示:

use package::{Class1, Class2};

除了像这样逐行写每个导入外,还有其他选择吗?

import package.Class1;
import package.Class2;

3 个答案:

答案 0 :(得分:2)

Java语言规范的7.5. Import Declarations部分显示:

  

导入声明允许使用由单个标识符组成的简单名称(§6.2)来引用命名类型或static成员。

     

[...]

     
      
  • 单一类型导入声明(§7.5.1)通过引用其规范名称(§6.7)来导入单个命名类型

  •   
  • 按需类型导入声明(§7.5.2)根据需要导入命名类型或命名包的所有可访问类型,只需提及的规范名称即可。类型或包。

  •   
  • 单静态导入声明(§7.5.3)通过给出其规范名称,以给定名称从类型中导入所有可访问的static 成员

  •   
  • 按需静态导入声明(§7.5.4)通过引用规范名称,根据需要导入所有可访问的static命名类型的成员类型。

  •   

如您所见,它是单个命名类型,或者是所有可访问类型。类型的列表没有语法。


旁注:我几乎从不看代码中的import语句。我让Eclipse为我自己管理(源>组织导入...(Ctrl + Shift + O)),所以我真的不关心有很多单类型导入语句。无论如何,包含导入的部分都已折叠,因此我什至不必滚动过去。哦,喜欢使用优质的IDE

答案 1 :(得分:1)

不。 Java没有使用一个语句导入一组选择类的结构。您可以从包中导入所有类型,也可以一个一个地导入它们。

使用*可让您从同一包中导入所有类(而不是您提到的那样导入子包):

import package.*; //Both Class1 and Class2 are imported
import static package.Class1.* //All static members of Class1 are imported

通常不建议使用第一种形式import package.*,因为名称冲突的可能性增加(来自不同软件包的相同类名)。 import package.{Class1,Class2}可能会提供帮助,但是Java中没有这样的构造。

答案 2 :(得分:1)

在Java中,仅支持的导入多个类的方法如下:

A-导入单个类

import package.Class1;
import package.Class2;

B-在包或子包中导入所有类

import package.*;
import package.subpackage.*;

有关更多信息,请参考Oracle文档:https://docs.oracle.com/javase/tutorial/java/package/usepkgs.html