7

ソナーでこの警告が表示されます:

'HashMap'のような実装タイプの使用は避けてください。代わりにインターフェースを使用してください

どういう意味ですか?

この警告が表示されるクラスは次のとおりです。

class A {
   private HashMap<String, String> map=new HashMap<String, String>();

   //getters and setters

}

ソナーでの警告を避けるための適切な解決策が必要です。

4

3 に答える 3

20

常にインターフェースにコーディングする必要があります。すなわち。この場合、フィールドを次のように宣言する必要があります。

private Map<String, String> map= new HashMap<String, String>();

このように、変数を使用するものはすべて、変数を。ではなくmap型として扱います。MapHashMap

これにより、コードを変更することなく、後日、マップの基盤となる実装を交換できます。あなたはもはや縛られていませんHashMap

この質問を読んでください:「インターフェースにプログラムする」とはどういう意味ですか?

また、そこに何をキャストしていたのかわかりませんかSet

于 2013-01-18T10:07:23.487 に答える
5

私はソナーを使用していませんが、警告が基本的に意味するのは

実装クラスではなく、常にインターフェースにプログラムする

private Map<String, String> map= new HashMap<String, String>();
        Interface                    Implementing class
于 2013-01-18T10:07:37.900 に答える
4

一般に、具象型ではなく、常にインターフェースに対して実装する必要があります。この例では、次のようにコードを記述する必要があることを意味します。

private Map<String, String> map= new HashMap<String, String>();

大きな利点は、後でコードを壊すことなく、マップの具体的な実装をいつでも変更できることです。

詳細については、次の質問を確認してください。「オブジェクトではなく、インターフェイスに対するコード」と言うとき、プログラマーはどういう意味ですか?

于 2013-01-18T10:07:50.973 に答える