[ITEM 22]インタフェースはタイプの定義にのみ使用されます


📚 インタフェースはタイプの定義にのみ使用されます


インタフェース
独自のクラスを実装するインスタンスを参照できるタイプのロール.
  • クラスで実装されたインタフェース
  • は、クライアントが自分のインスタンスを使用して何を実行できるかを示します.
  • インタフェースはこの用途にのみ使用できます!
  • 不正な例


    定数インタフェース


    定数インタフェース
    メソッドはなく、定数を表すstatic finalフィールドのインタフェースのみ
    // 상수 인터페이스 예시 (사용 금지)
    public interface PhysicalConstants {
    	// 아보가드로 수 (1/몰)
        static final double AVOGARDROS_NUMBER = 6.022_140_857e23;
       
       // 볼츠만 상수 (J/K)
       static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;
       
       // 전자 질량 (kg)
       static final double ELECTRON_MASS = 9.109_383_56e-31;
    
    }
  • 正規化された名前の使用を避けるために、インタフェースはしばしば実現される.
  • 定数インタフェースモードは、インタフェースを誤って使用した例である.
  • クラスの内部で使用される定数は、外部インタフェースではなく、内部実装である.
  • 定数インターフェースを実装することは、内部実装をクラスのAPIに暴露する行為である.
  • クラスは、定数インタフェースを使用してもユーザーには意味がなく、かえって混乱をもたらします.
  • が深刻な場合、クライアントコードは、内部実装に対応するこれらの定数に依存する.
  • 別の定数インタフェース)Java.io.ObjectStreamConstantsなどのJavaプラットフォームライブラリにもいくつかの定数インタフェースがあります.
  • 他の方法で賞を公開すると?

  • の特定のクラスまたはインタフェースの強さに関連する定数である場合、クラスまたはインタフェース自体に追加する必要があります.
  • 例)すべてのデジタルベースタイプのパケット
  • Integer、Doubleと宣言されたMIN VALUEとMAX VALUE定数
  • 列タイプで表される適切な定数である場合には、
  • 列タイプで作成する.
  • であれば、
  • がインスタンス化不可能なユーティリティクラスに開示.

    正しい例

    // 상수 유틸리티 클래스
    public class PhysicalConstants {
    	private PhysicalConstants() { } // 인스턴스화 방지
        
       // 아보가드로 수 (1/몰)
       static final double AVOGARDROS_NUMBER = 6.022_140_857e23;
       // 볼츠만 상수 (J/K)
       static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;
       // 전자 질량 (kg)
       static final double ELECTRON_MASS = 9.109_383_56e-31;
    
    }
    

    📍 コアの整理

  • インタフェースは、タイプを定義するためにのみ使用できます.
  • 定数を公開手段として使用しないでください.