与通过通配符(星号)导入相比,导入单个 类 的编码风格优势

Coding style advantages in importing individual classes over importing by wildcard (star)

许多 Java classes 涉及从其他包导入,包括来自内置包的那些 java.awtjavax.swing 用于 GUI 编程,或使用class 来自同一个 Java 项目的其他包。

我目前使用 Eclipse IDE,并且在需要时进行导入。但是,当我使用需要从另一个包导入的方法时,它只会从该包导入 相关的 classes。这让我更难手动管理导入,并使导入的包更难阅读。我几乎总是通过使用通配符 * 来使我的代码更紧凑,以指示我将从该包中导入 所有 classes

这是一个简单的 Java 程序,它创建一个 JFrame,其中包含一个带有 JLabel 和 JButton 的白色 JPanel。

/* What I got */
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/* Can be instead */
// import java.awt.*;
// import java.swing.*;

public class GUIframe extends JFrame {
    private static final long serialVersionUID = 1L;

    public GUIframe() {
        super();

        this.setSize(new Dimension(400,400));
        this.setTitle("JFrame");

        JPanel panel = new JPanel();
        panel.setBackground(Color.WHITE);
        panel.add(new JLabel("JLabel"));
        panel.add(new JButton("Button"));

        this.getContentPane().add(panel);

        this.setVisible(true);
    }
}

我想知道仅从导入的包中导入单个 classes 而不是通过通配符导入所有 classes 的编码风格优势是什么? (众所周知,它生成相同的字节码,因此没有运行时性能差异,只有微小的编译时差异)

目前我只选择通配符导入,除非class导入的数量很少,因为这样更容易管理。 什么时候单独导入合适,什么时候通配符导入合适?

没有运行时性能差异。它主要归结为能够理解所使用的内容。

如果您使用一个包中 75% 的调用,那么您是对的,最好使用通配符导入整个包。而如果您只使用 100 个中的 1 个或 2 个,则更容易看到您在使用什么。