[解決済み] なぜJavaのクラスはインターフェイスを優先するのですか?
2023-07-14 14:02:50
疑問点
PMD は違反を報告するだろう。
ArrayList<Object> list = new ArrayList<Object>();
違反は "「ArrayList」のような実装型の使用は避け、代わりにインターフェイスを使用すること"でした。
以下の行で違反が修正されます。
List<Object> list = new ArrayList<Object>();
なぜ後者の
List
の代わりに
ArrayList
?
どのように解決するのですか?
具象型よりもインターフェイスを使用することは、優れたカプセル化とコードの疎結合のための鍵です。
あなた自身のAPIを書くときにこの実践に従うのは良い考えです。そうすれば、(モッキング技術を使用して)コードにユニットテストを追加し、将来必要であれば基礎となる実装を変更することがより簡単であることに後で気づくでしょう。
ここに 良い記事 をご覧ください。
お役に立てれば幸いです。
関連
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
-
[解決済み] インターフェースとベースクラス
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
無効な文字定数
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
配列定数は初期化子でのみ使用可能です。
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
eclipse にリソースリーク:'in' が閉じない
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
[解決済み] ポリモーフィズム。なぜ「ArrayList list = new ArrayList」ではなく、「List list = new ArrayList」を使うのか?重複