1. 概述

在Java开发中,适当的导入语句对于保持代码可读性和避免潜在冲突至关重要。IntelliJ IDEA是一款流行的Java集成开发环境(IDE)。本教程将指导您如何在IntelliJ中禁用通配符导入

2. IntelliJ的优化导入功能

IntelliJ内置了“优化导入”功能,它可以自动重新排列导入语句,如应用预设样式、调整顺序或清理未使用的导入等。

我们可以通过菜单项“Code -> Optimize imports”对当前Java文件应用“优化导入”:

菜单:优化导入

当然,也可以使用快捷键来优化当前Java文件的导入。

3. IntelliJ中的导入设置

通配符导入是一种常见的做法,它导入包内所有类,如import java.util.\***。通配符导入可以节省键入,但可能引入歧义,使代码难以理解。

要禁用通配符导入,首先打开设置弹出窗口:“File -> Settings”(macOS上为“Preferences”)。

然后,在设置窗口中,我们找到Java导入设置标签:Editor -> Code Style -> Java ->Imports

Java导入设置

在“Imports”选项卡下,有三个设置会影响IntelliJ是否会在Java文件中使用通配符导入:禁用通配符导入

接下来,我们将详细查看这些设置。

4. “通用开关” - “使用单个类导入

第一个复选框,“使用单个类导入”是Java源文件中启用或禁用通配符导入的全局开关。如果不勾选此选项,IntelliJ始终使用通配符导入。

假设我们的Java文件只有两个导入语句:

import java.time.Instant;
import java.util.ArrayList;

如果我们不勾选“使用单个类导入”选项,并让IntelliJ自动“优化导入”,上述两个导入会变成这样:

import java.time.*;
import java.util.*;

因此,如果我们希望在Java源文件中禁用通配符导入,应勾选“使用单个类导入”选项。

5. “使用通配符导入的类数”选项

接下来关注的是“使用通配符导入的类数”配置。我们可以设置这个选项的值到一个期望的数值。当导入的类数量超过给定值时,IntelliJ会自动从显式导入切换到通配符导入。

考虑我们Java文件中的导入:

import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

假设我们在IntelliJ中的设置如下:

  • 使用单个类导入”选项 - 已勾选
  • 使用通配符导入的类数” - 5

现在,如果让IntelliJ自动优化导入,我们会看到如下结果:

import java.time.Instant;
import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

由于我们从java.util包导入了超过五个类,导入语句变为java.util.\***

所以,要禁用通配符导入,我们可以将“使用通配符导入的类数”的值设置为较大的数值,如100或999。

6. 例外:“使用通配符导入的包列表”表格

最后,我们来看“使用通配符导入的包列表”表格。这个表格允许我们添加总是使用通配符导入的包,无论是否勾选“使用单个类导入”选项,或者“使用通配符导入的类数”配置的数值是多少。

假设我们的设置如下:

  • 使用单个类导入”选项 - 已勾选
  • 使用通配符导入的类数” - 100
  • “使用通配符导入的包列表” - java.util.** (包含子包)

现在,如果我们优化上一节中的Java文件的导入,我们会得到:

import java.time.Instant;
import java.util.*;
import java.util.function.*;
import java.util.stream.*;

由于我们在“使用通配符导入的包列表”中添加了java.util.\***,IntelliJ将对java.util包内的任何类都使用通配符导入。

因此,如果要完全禁用通配符导入,应确保这个表格为空。

7. 总结

本文讨论了如何在IntelliJ中完全禁用Java文件中的通配符导入,通过设置以下三个主要配置选项:

  • 使用单个类导入”选项 - 勾选
  • 使用通配符导入的类数” - 100(或其他大数值)
  • 使用通配符导入的包列表 - 空白