包机制
Java 的包机制(Package)是 Java 用来组织类和接口的一种命名空间机制,类似于操作系统中的文件夹。它主要用于解决类名冲突、代码管理、访问控制等问题。
包命名规范
com.company.project.service这是一个典型的包名,表示层级结构:
com
└── company
└── project
└── service包命名规范:
- 公司域名倒写+项目名+模块
- 包名只能使用小写字母
- 多个单词使用
-连接
com.alibaba.oa.empgt.controller定义包
在 Java 文件的第一行使用 package 关键字定义包。
java
package com.example.demo;
public class UserService {
}这表示 UserService 类属于:
com.example.demo有了包机制后,完整的类名是包含包名的:
com.example.UserService带包编译
在 Java 中,如果类声明了 package,编译时就叫做带包编译。带包编译的核心是:编译后的 .class 文件需要按照包结构生成目录。
java
package com.test.demo;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello Java");
}
}直接编译,会直接生成:Hello.class。
javac Hello.java但是Hello.class中记录的完整类名是com.test.demo.Hello
java Hello //Could not find or load main class Hello
java com.test.demo.Hello //Could not find or load main class com.test.demo.HelloJVM 会根据类名解析路径:
com.test.demo.Hello
↓
com/test/demo/Hello.class也就是 JVM 会去找:
./com/test/demo/Hello.class但是实际文件存放位置是./Hello.class因此JVM无法加载字节码文件
使用 -d 参数指定输出目录。-d表示按照package结构在当前目录生成class文件
javac -d . Hello.java将会生成如下目录结构:
.
└── com
└── test
└── demo
└── Hello.class运行时必须使用全限定类名:
java com.test.demo.HelloHello Java导入包
如果要使用其他包中的类,需要使用 import。
