Nice 的參數化類類似 C++ Template 或函數式語言的多態機制,廣泛用於數據結構。核心優勢:編譯期類型安全。
// Java 風險代碼
Stack st = new Stack();
st.push("Test");
Integer num = (Integer)st.pop(); // 運行時拋 ClassCastException
// Nice 安全代碼
Stack st = new Stack();
st.push("Test");
Integer num = st.pop(); // 編譯期直接報錯!
Stack 向編譯器聲明類型約束,實現「編譯期即發現類型不匹配」,徹底消除運行時轉型風險。
// 風格一:傳統塊內定義
interface Component {
String getID();
int getArea() { ... } // 默認實現
}
// 風格二:全局多元方法定義
interface Component {}
String getID(Component c);
int getArea(Component c) { ... }
// 混合使用無障礙,建議:無默認實現放塊內,有默認實現放塊外,閱讀性最佳。
解決「魔術數字」帶來的運行時非法值問題。
enum Color { Red, Orange, Yellow, Blue, Indigo, Violet }
enum VendingCoin(int value) {
nickel(5), dime(10), quarter(25);
}
void addCoin(VendingMachine m, VendingCoin coin) {
m.change += coin.value; // 編譯器保證只能傳入合法硬幣類型
}
編譯期強制類型檢查,杜絕 3 或 234320 這類非法面值傳入,比運行時檢查更早、更安全。