Java 中的包(packages)用于逻辑分组类、接口和子包。这有助于结构化大型项目,提高代码的可读性和重用性。
包的主要功能:
创建和使用包:
package com.example.utils; public class MathUtils { public static int sum(int a, int b) { return a + b; } }
要使用来自其他包的类:
import com.example.utils.MathUtils; public class Test { public static void main(String[] args) { System.out.println(MathUtils.sum(5, 7)); } }
是否可以在 Java 类文件的中间或非第一行定义包?
回答: 不可以,package 指令必须是 Java 源文件中的第一(非空)行。
// 不正确! import java.util.*; package com.example; // 编译错误 public class MyClass {}
故事
在实际项目中,文件开头忘记注明
package指令。编译后,该类出现在默认包中,这导致与其他库中的同名类发生冲突。结果导致类型错误和构建 JAR 文件时的问题。
故事
在大型团队中处理多个包时(例如,com.example 和 com.Example),在 Linux 和 Windows 之间出现了不兼容的问题——Windows 忽略路径中的字母大小写,而 Linux 则不。由于在部署到 Linux 服务器后出现意外错误,这导致生产环境中出现了问题。
故事
开发人员不小心将类的访问权限设置为
protected,以为外部无法看到这些重要的方法,但没有考虑到同一包内的类可以访问这些成员。这导致通过不适合外部使用的 API 泄露了内部业务逻辑。