【问题标题】:How to import java class? [duplicate]如何导入java类? [复制]
【发布时间】:2011-01-16 09:19:45
【问题描述】:

可能重复:
Import package.* vs import package.SpecificType

我能做到吗:

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;

如果两种方法都正确,哪一种更好?

【问题讨论】:

标签: java import


【解决方案1】:

你可以导入通用包,但最好更明确一些,导入你需要的特定类。它有助于防止命名空间冲突问题,并且更好。

另外,如果您使用 Eclipse 和快捷键 CTRL+SHIFT+O,它会自动生成显式导入,提示您输入不明确的导入。

【讨论】:

  • +1 我提名这个答案以供接受。
  • @Jon - 感谢您的输入,可能会导致什么命名空间冲突?编译器会返回错误吗?
  • 例如如果你使用 Date date = new Date();并 import java.util.* 和 import java.sql.* 你最终会遇到“日期类型不明确”的语法错误。
【解决方案2】:

它只会导入java.awt中的类,所以你也必须导入java.awt.event:

import java.awt.*
import java.awt.event.*;

第二种方法可能会加载更少的类,但不会为您节省太多内存。

【讨论】:

  • ++。编译器擅长仅导入实际使用的类,因此导入特定类的唯一优势是降低非限定名称冲突的可能性。
  • 一个具体的例子是如果你导入 java.awt.* 和 java.util.* 然后尝试使用 List。在这种情况下,您必须导入特定的类。
【解决方案3】:

他们俩都很好。第一个不太冗长,但第二个将允许您具体说明您导入的类,从而避免冲突。由于大多数 IDE 都允许您隐藏 import 语句,因此第二个的冗长并不是真正的问题。

考虑

import java.util.*;
import java.awt.*;

当您尝试声明List 时,您将在java.awt.Listjava.util.List 之间发生冲突

【讨论】:

    【解决方案4】:

    一个更明确的。

    编辑:第二种方法的优点是可读性,没有命名空间冲突等。但是如果你有一百个类要从一个包中导入,你最好使用第一种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-06
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 2018-04-17
      • 2021-02-25
      相关资源
      最近更新 更多