Java中的类导入和包导入之间有什么区别吗?

2022-09-03 09:23:00

在Java中,我们可以导入单个类以及整个类集(包)。

作为示例

import java.util.*

包括

import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Iterator;
import java.util.Map;

除了代码的长度之外,以任何方式使用每种方法是否有任何特定优势?内存分配?性能?


答案 1

两者都没有性能或内存分配优势 - 它们都将编译为相同的字节码。

该语句是告诉编译器在哪里可以找到源代码所引用的类。import

但是,仅按类导入有一个优点。如果在两个包中存在一个名称完全相同的类,则在引用哪个类时将存在冲突。

一个这样的例子是类和类。java.awt.Listjava.util.List

假设我们要使用 a 和 a。如果源按如下方式导入包:java.awt.Paneljava.util.List

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

然后,引用类将是模棱两可的:List

List list; // Which "List" is this from? java.util? java.awt?

但是,如果显式导入,则结果将为:

import java.awt.Panel;
import java.util.List;

List list; // No ambiguity here -- it refers to java.util.List.

答案 2

您选择使用的导入仅在解析类名时产生编译时差异。

因此,唯一的优点/缺点适用于可读性。

只导入您所需的最低限度似乎更好,因为有人可以查看您实际使用的内容。也就是说,IDE可能会处理这个问题,这是一个没有实际意义的问题。