2016-04-14 4 views
0

私は次のコードを持っている:ImmutableList.copyOf()に不変のリストを渡す?

private static final ImmutableMultimap<String, String> namesToAddress; 

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

私の質問はwheter守備のcopyOf()ここでは、(につれ、必要ですが)とにかく不変のリストを返しますか?

注Google GuavaのImmutableMultiimapを使用しています。

ありがとうございました。

+2

' ImmutableMultimap番号をasList()を呼び出すことになりますImmutableList.copyOf(ImmutableCollection)を呼び出すImmutableList

  • としてコレクションを表示(または必要に応じてコピー)するasList()メソッドを持っています。それをコピーする必要はありません。しかし、リストが必要な場合は... – Savior

  • +0

    Google Guavaのドキュメント(http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableListMultimap.html)に記載されていますmmutableMultimap#getはImmutableListを返す ... – user1974753

    +3

    また、 'ImmutableList.copyOf'は実際には' ImmutableList'をコピーしません。 –

    答えて

    5

    カップルの事(主にコメントでカバーされますが、答えとして):

    • あなたはnamesToAddressesの型としてImmutableListMultimapを使用する場合は、get()ImmutableListを返します。 copyOfやキャストなど何も必要ありません。
    • これをしなくても、ImmutableMultimap.get()ImmutableCollectionを返します。 ImmutableCollection sがとにかくコレクションで `ImmutableCollection`を返しGET`
    関連する問題