【问题标题】:Why don't I need to use the import keyword when importing a library?为什么我在导入库时不需要使用 import 关键字?
【发布时间】:2014-04-13 17:55:37
【问题描述】:

我按照以下说明在 Eclipse 中将外部 JAR 导入到我的项目中:

右键单击项目>构建路径>添加外部档案>从硬盘驱动器中选择JAR文件。

JAR 文件出现在我项目的“参考库”部分中,并且工作正常。

但是,我从不需要在我的类中使用 import 关键字来使用 JAR 中的类。我觉得这很奇怪,我想我必须使用 import myImportedJar 或类似的东西才能让它工作。

我不必使用import 关键字是否正常?我是不是做错了什么?

【问题讨论】:

  • 相关类在什么包里?
  • 你的项目里有几十个jar,这并不意味着所有的类都导入到一个类中。你必须导入。
  • @SotiriosDelimanolis 所有类都在默认包中。导入的 JAR 位于 References Libraries 部分。

标签: java eclipse jar import


【解决方案1】:

import 语句用于通过简单名称来引用类型及其成员。您不需要导入同一个包中的类,除非它们是其他类的嵌套成员。无论该类来自何处,例如,如果它在另一个 .jar 中,都是如此。

【讨论】:

  • 这是否意味着一个类在什么 JAR 中并不重要——只在乎它在什么 中?意思是,如果 A 类位于从外部导入项目的 JAR 中,而 B 类是在项目内部创建的——两者都没有明确定义的包——这意味着它们都在同一个包中,默认包?
  • @Prog 没错。 jar 只是对 .class 文件进行分组的解决方案。最后,当你提供一个类路径给 JVM 时,这都是对应包中的一堆.class 文件。 jars 或其他任何地方的 .class 文件之间没有区别。
  • 所以我不需要写import,因为导入的JAR中的类也在默认包中?
  • @Prog 对。如果您的类在包org.example 中,并且其他一些类也在该包中,但它位于类路径上的单独 jar 中,则会发生同样的事情。此行为不仅适用于默认包。
【解决方案2】:

import 关键字在包级别起作用。这些包是否由 jars 提供不是 java 编程语言的特性。

import 仅在您的程序中以非限定形式提供名称。以下代码片段完全相同:

java.util.List<Object> list = new java.util.ArrayList<>()

import java.util.List;
import java.util.ArrayList;

List<Object> list = new ArrayList<>()

现在,在 Eclipse 中导入一个 jar 文件会将这个 jar 文件中的类放在类路径中 - 您的应用程序可用类的总“世界”。

【讨论】:

  • 感谢您的回答。有一个问题java.util.List - 我不确定这句话是什么意思。 List 显然是一个类。但是java 到底是什么,util 是什么?图书馆?罐子?包裹?他们来自哪里?我不完全明白。
  • jre 提供了一个(相当全面的)标准库。这个库包含你很可能需要用 java 做任何严肃的事情的类。看看docs.oracle.com/javase/7/docs/api - 这些类(组织在包中)可供您使用而无需任何其他 jar,只是因为您安装了 java,
猜你喜欢
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
相关资源
最近更新 更多