當 class 實作介面 (interface) 時,介面就可以當作該 class 的型態,像是 Integer 實作 Comparable,就可以用 Comparable 型態的變數來接 Integer。
Integer i = 1_000_000;
Comparable comparable = i;
有一種常量介面 (constant interface),它沒有任何方法,只有 static final field (常數)。常量介面模式其實是一種不良運用,實作細節會使用的常量,不應洩漏到介面中,實際運用上易混淆開發者,如果日後介面更新,已實作該介面的 class,發現不再需要使用常數,有可能因為相容性的關係,還是必須實作該常量介面。java.io.ObjectStreamConstants 就是 constant interface 的例子,如果要釋出常量,應該定義於使用的 class 或是介面中,像是 Integer 中的 MIN_VALUE 與 MAX_VALUE。如果適合用 enum 就使用 enum,或是用不可實體化的 utility class,將常量定義於該 class 中。轉載請註明原文網址 https://cookieandcoketw.blogspot.com/2020/07/effective-java-22-interface-types.html
沒有留言:
張貼留言