182. Java 包 - 创建和使用 Java 包
在 Java
中,包(Package
) 是组织类和接口的一种机制。它可以帮助我们将相关的类型组织在一起,避免命名冲突,并使代码更加模块化和可维护。
🚀 创建自定义包
要定义一个包,需要在 Java
源文件的顶部,使用 package
语句:
java
package com.example.shapes;
public class Circle {
public double radius;
public Circle(double r) {
radius = r;
}
}
🧠 注意:
package
语句必须是文件中的第一个非注释、非空白行。- 包名通常使用 全小写字母。
- 使用公司反向域名作为前缀是常见的命名规范(例如
com.example
),以避免与其他开发者的包发生冲突。
🧭 使用其他包中的类
如果你想在另一个包中使用上面定义的 Circle
类,有三种方式可以做到:
✅ 方法一:使用完全限定名
java
com.example.shapes.Circle c = new com.example.shapes.Circle(5.0);
这种方式清晰明了,不需要额外的导入语句。但写起来比较啰嗦,不推荐在大量使用时采用。
✅ 方法二:导入指定类
java
import com.example.shapes.Circle;
public class App {
public static void main(String[] args) {
Circle c = new Circle(5.0);
}
}
这是最常见的使用方式,推荐在你只需要使用某几个类时使用。
✅ 方法三:导入整个包
java
import com.example.shapes.*;
public class App {
public static void main(String[] args) {
Circle c = new Circle(5.0);
// 还可以使用该包中其他类型,如 Square、Rectangle(如果有)
}
}
使用 *
表示导入该包中所有的类(不包括子包)。适合你频繁使用某个包中多个类的情况,但过度使用可能会增加类名冲突的风险。
📁 包结构与文件路径
Java
包名与文件系统路径是一一对应的,例如:
java
com/example/shapes/Circle.java
编译后生成的 .class
文件也会被放在相应目录中:
java
com/example/shapes/Circle.class
🧠 也就是说,包名决定了类文件的存储路径,这也是 Java 项目组织代码文件的基础。
📦 设置 CLASSPATH
(类路径)
如果你将类文件保存在项目以外的路径,JVM
和 Java
编译器可能找不到这些类。此时你就需要设置 CLASSPATH
环境变量。
比如:
java
export CLASSPATH=.:/path/to/my/classes
含义:
.
表示当前目录/path/to/my/classes
表示你自己的类文件存放路径
💡现代 Java 项目通常使用 构建工具 (如 Maven
、Gradle
),它们会自动处理 classpath
的配置,无需手动设置。
✅ 小结
操作 | 说明 | 示例 |
---|---|---|
创建包 | 使用 package 语句 |
package com.example.tools; |
使用类(完全限定名) | 不需要 import ,但繁琐 |
new com.example.shapes.Circle() |
使用类( import 单个类) |
简洁明了 | import com.example.shapes.Circle; |
使用类( import 整个包) |
导入多个类方便 | import com.example.shapes.*; |
包路径对应 | 包名与文件路径一一对应 | com/example/shapes/Circle.java |
设置类路径 | 用于指定 class 文件查找路径 |
CLASSPATH=.:/your/classes/dir |