跳到主要内容

Java和kotlin中的import做了什么

在 Kotlin 和 Java 中,当你使用 import 语句引入一个依赖(例如 import androidx.annotation.StringRes)时,并不是将所有的代码复制到你的项目中。import 语句的作用是告诉编译器你将在代码中使用来自某个包的类、接口、函数或其他成员,这样编译器就可以正确地解析你使用的这些类型的引用。

编译和链接过程

  1. 编译时:在编译时,编译器使用 import 语句来确定你引用的类或成员所在的完全限定名(即包含包名和类名的名称)。编译器确保你使用的类或成员在指定的包中确实存在,并且你有权使用它(比如访问权限允许)。此时,编译器不会将这些类的代码复制到你的项目中,而是生成对这些外部类的引用。
  2. 打包和链接:当你的应用被打包(比如生成 APK 文件时)时,构建工具(如 Gradle)会根据项目配置(包括 build.gradle 文件中指定的依赖)将这些外部依赖包含到最终的应用包中。这些依赖通常以库的形式存在,可能是 JAR 文件(Java Archive)或 AAR 文件(Android Archive)。
  3. 运行时:应用运行时,这些依赖的类和资源是应用的一部分,可以被应用正常使用。如果你使用了某个库中的类或资源(如 @StringRes 注解),那么这个类或资源会从应用打包的库中加载。

依赖的作用

  • 代码重用:通过引入外部库,你可以重用其他开发者编写的代码,而不需要将这些代码直接复制到你的项目中。这样既节省时间,也减少了代码维护的复杂性。
  • 模块化:依赖管理允许项目保持模块化,你可以单独更新或更换某个库而不影响其他部分。