如何导入java类?
可能重复:如何导入java类?,java,import,Java,Import,可能重复: 我可以做: import java.awt.* 而不是: import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 如果两种方法都正确,哪一种更好?一种更明确的方法 编辑:第二种方法的优点是可读性,没有名称空间冲突等。但是,如果要
我可以做:
import java.awt.*
而不是:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
如果两种方法都正确,哪一种更好?一种更明确的方法
编辑:第二种方法的优点是可读性,没有名称空间冲突等。但是,如果要从一个包中导入100个类,最好使用第一种方法。它将只导入java.awt中的类,因此您也必须导入java.awt.event:
import java.awt.*
import java.awt.event.*;
第二种方法可能会加载较少的类,但不会为您节省大量内存。您可以导入通用包,但最好更显式地导入所需的特定类。它有助于防止名称空间冲突问题,而且更好
另外,如果您使用Eclipse和快捷键CTRL+SHIFT+O,它将自动生成显式导入,提示您进行不明确的导入。它们都很好。最上面的一个不太详细,但第二个允许您具体说明导入的类,从而避免冲突。由于大多数IDE都允许您隐藏导入语句,因此第二个语句的冗长性并不是一个真正的问题 考虑
import java.util.*;
import java.awt.*;
当你试图声明一个
列表
时,你会在java.awt.List
和java.util.List
之间产生冲突:@Mark-我不这么认为,但感谢你的观察,我想知道你是否愿意/能够在下面的答案中添加一些内容?++。编译器擅长于只导入实际使用的类,因此导入特定类的唯一优势是降低非限定名称冲突的可能性。一个具体的例子是,如果导入java.awt.*和java.util.*然后尝试使用List。在这种情况下,您必须导入特定的类。+1我指定此答案以供接受。@Jon-感谢您的输入,什么名称空间冲突会导致?编译器将返回错误?例如,如果使用日期=新日期();和import java.util.*和import java.sql.*最后会出现“类型日期不明确”的语法错误。