日常開發中,System.out.println() 等樣板代碼重複率極高。封裝常用工具方法至專屬套件(如 com.yourname.tools),不僅能減少鍵盤輸入,更能統一團隊編碼風格、集中修復潛在 Bug。
Ppackage com.yourname.tools;
public final class P {
private P() {} // 防止實例化
// 單參數輸出(不換行)
public static void rint(Object o) { System.out.print(o); }
public static void rint(String s) { System.out.print(s); }
public static void rint(char[] c) { System.out.print(c); }
public static void rint(char c) { System.out.print(c); }
public static void rint(int i) { System.out.print(i); }
public static void rint(long l) { System.out.print(l); }
public static void rint(float f) { System.out.print(f); }
public static void rint(double d) { System.out.print(d); }
public static void rint(boolean b) { System.out.print(b); }
// 換行輸出
public static void rintln() { System.out.println(); }
public static void rintln(Object o) { System.out.println(o); }
public static void rintln(String s) { System.out.println(s); }
public static void rintln(char[] c) { System.out.println(c); }
public static void rintln(char c) { System.out.println(c); }
public static void rintln(int i) { System.out.println(i); }
public static void rintln(long l) { System.out.println(l); }
public static void rintln(float f) { System.out.println(f); }
public static void rintln(double d) { System.out.println(d); }
public static void rintln(boolean b) { System.out.println(b); }
}
import static com.yourname.tools.P.*;
public class Demo {
public static void main(String[] args) {
rint("User: "); rintln("Alice");
rintln("Age: ", 25); // 需另行多載或用字串串接
rintln("Active: ", true);
}
}
專案編譯時刻正常,執行期或切換環境後突然報 NoSuchMethodError 或找不到方法。原因往往是 CLASSPATH 中存在同名但不同包結構的類別,類別載入器按順序找到第一個同名類別即停止搜尋。
com.yourname.tools.PP.class(或同名類)P,缺少預期方法com.company.project.module)pom.xml 中 <exclusion> 排除java -verbose:class 觀察實際載入類別來源import static 友善的方法命名(如 p()/pln())mvn dependency:tree / gradle dependencyInsight)自訂工具庫是提升開發效率的槓桿,但CLASSPATH 唯一性是其穩健運作的基石。從「命名規範」到「依賴管理工具化」,每一步都是為了讓「寫一次,到處用」真正落地。