现在,我不需要在代码顶部导入它们,而只需要进入Maven项目的POM文件并添加依赖项.
不.你把两件不同的事情混为一谈:
- Managing dependencies(在项目中下载和放置库)
- Using dependencies(从代码中调用库的类和方法)
Managing dependencies
要使用库,您需要获取物理副本、文件,通常是.jar
文件.您可以手动下载副本.或者您可以使用Maven或Gradle下载一份副本.通常建议使用Maven或Gradle方法,而不是手动方法.
下载后,您需要将文件放置在项目中可以找到的位置.同样,您可以手动执行此操作,也可以使用Maven或Gradle使文件可用于您的项目.同样,与手动方法相比,通常建议使用Maven或Gradle方法.
Using dependencies
在获得并放置了库的副本之后,您就可以访问它的类和方法了.
???? 问题是在另一个库中找到了authors of that library may have named some of their classes and methods coincidentally with the same name个.
假设您想使用一个名为Source
的类,但您的两个库都有这样的类:
javax.xml.transform.Source
com.example.awesome.Source
如果您在代码中编写:
Source s = new Source() ;
…编译器如何知道您指的是这两个类中的哪一个?????
要解开谜团,您可以:
- Write a fully-qualified class name.
javax.xml.transform.Source s = new javax.xml.transform.Source() ;
- Write an
import
statement.
import javax.xml.transform.Source ;
第二种方法是编写import
条语句,通常比第一种使用完全限定名的方法打字更少,阅读更容易.
import
这个词有点用词不当,是出于历史遗留的原因.一个更好的名称应该是namespace,例如,特定名称的特定定义域.
阅读此内容时:
import javax.xml.transform.Source ;
…想想看:
namespace javax.xml.transform.Source ;
…意思是:"下面使用的任何单词"Source"都可以假设是指库中包为javax.xml.transform
的Source
类."
为了找到您命名的包的类,运行时Java Virtual Machine自动查找您获得和放置的所有库.