0

次のコードがあります。

private static final ImmutableMultimap<String, String> namesToAddress;

public static List<String> getAddresses(String name){
  return ImmutableList.copyOf(namesToAddress.get(name));
}

私の質問は、とにかく get() が不変のリストを返すため、ここで防御的な copyOf() が必要かどうかです。

Google Guava の ImmutableMultiimap を使用していることに注意してください。

ありがとう。

4

1 に答える 1

5

いくつかのこと(ほとんどがコメントでカバーされていますが、答えとして):

  • ImmutableListMultimapの型として使用するとnamesToAddresses、;get()が返されます。ImmutableList呼び出しcopyOfたりキャストしたりする必要はありません
  • そうしなくても、 ;ImmutableMultimap.get()が返されます。コレクションをImmutableCollectionImmutableCollectionasList()ImmutableList
  • とにかく、ImmutableList.copyOf(ImmutableCollection)呼び出しはコレクションを呼び出すことになりますasList()
于 2016-04-14T18:15:55.433 に答える