2012-03-17 2 views

答えて

3

ただ、コードを読んで、あなたは彼らがリストが不変であることを確認していることがわかります。

public class ImmutableMessage { 
private final int sequenceNumber; 
private final List<String> values; 

public ImmutableMessage(int sequenceNumber, List<String> values) { 
    this.sequenceNumber = sequenceNumber; 
    // HERE -- NEXT LINE MAKE SURE THAT THE LIST IS NOT MUTABLE: 
    this.values = Collections.unmodifiableList(new ArrayList<String>(values)); 
} 

public int getSequenceNumber() { 
    return sequenceNumber; 
} 

public List<String> getValues() { 
    return values; 
} 
} 
+1

OK、今私は愚かな感じ。それは本当にありがたいことでした。 – JeffV

+0

Collections.unmodifiableList(values)の代わりにCollections.unmodifiableList(new ArrayList (values))を実際に使用する必要がありますか? – Bouncner

+0

コンストラクタが呼び出されたときに配列 'values'に格納された値を保持したい場合は、@Bouncer yesを指定します。それ以外の場合、他の誰かが元の配列を変更すると、 'this.values'も同様に変更されます。 –

関連する問題