---
# System prepended metadata

title: Pacakge
tags: [Java]

---

[toc]

https://docs.oracle.com/javase/tutorial/java/concepts/package.html

# Package
  
  簡單講, 就是組織class/interface的結構,
  基本上就是目錄(資料夾)。
  妥善的存放class/interface在適當的package能保持組織性。
  
  舉例: 
  
  Test.java在`example/test`目錄中
  意即: Test.java 位於`example.tests`這個package
  
此時, Test.java程式的最上面要寫:
```java
package example.tests;

...
```

## best practice
  當有多個專案在同個JVM運行時, 假設A專案跟B專案的其中一個.java路徑完全相同, 在載入第二個.java時會報錯。

例如:
projectA
```
test
- Main.java
```
projectB
```
test
- Hello.java
- Main.java
```
此時test/Main.java衝突了。

---

## package 寫法

把專案的.java檔都放進去 "倒反域名.projectname"
(請全部小寫)
<!--(請他媽的給我全部小寫, 要不你可以滾了) -->
  
  像是在 example.com (工作/開發) 的專案"test",
  package可以寫成```com.example.test``` (可以想像是資料夾 com/example/test/ ) 
  
  ```
  com/example/hello/Main.java
  com/example/hello/example/tests/Test.java
  
  (底下可能是其他專案。)
  org/bukkit/craftbukkit/Main.java
  net/minecraft/server/NetworkManager.java
  ```