繁体   English   中英

Java需要进口澄清

[英]Java imports clarification needed

由于我还是Java新手,因此我需要澄清如何正确完成导入。

第一:

import java.awt.*;
import java.swing.*;

我假设*表示“awt”和“swing”目录下的任何内容。 但我以前见过人们这样做过:

import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.swing.*;

我误会了什么吗? 或者我只是找到冗余?

import javax.awt.*

将包含javax.awt包中的所有类,但是它不会包含嵌套在javax.awt任何其他包,例如javax.awt.event 您需要将其用作单独的导入。 所有不同名称的包都需要单独包含。

使用import javax.swing.*您将不需要以下导入:

import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

因为他们是swing包的直接孩子。

在import语句中,*表示您需要该包中的所有内容。 一般来说,这不是一个好主意 - 您不需要包含所有包装的所有内容。

在实践中,我已经看到导入优化 - 只是导入你需要的东西。 大多数IDE,例如Eclipse,Netbeans和IntelliJ都可以选择为您做到这一点。

使用显式导入并避免使用通配符通常是个好主意,这样您就可以确切地知道要导入的内容。 但是,JVM只会在您使用通配符时导入所需的类(但不能从子包中导入),因此不会降低效率(除了可忽略的编译开销)。

这样做并不一定多余,但在我看来有点尴尬:

import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.*;

可能在另一个包中声明了另一个UnsupportedLookAndFeelException,因此您希望确保包含来自javax.swing包的那个,因此在这种情况下它是明确的。 如上所述,您最好的选择是允许IDE帮助您明确选择所需的导入。

当您在导入(通配符导入)结尾处添加*时,您将导入某些包中包含的所有类,即com.test.* 另一方面,当您添加一个类时,您将专门导入该特定类,即com.test.TestClass

但是,在使用第一种方法时,您需要了解可能的类冲突,如此stackoverflow线程中所述: Eclipse / Java - 它对导入java。(命名空间)有害。*?

由于我更喜欢​​第二种方法,因为我可以明确地告诉我打算使用哪个类,并以这种方式使代码更容易阅读

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM