1
akkaドキュメントでは、メッセージは不変でなければならないことを指定しています。 Javaのリストが変更可能な場合、これはどのようにOKですか?akka不変のメッセージリストを最終的に参照します
http://doc.akka.io/docs/akka/2.0/java/untyped-actors.html
akkaドキュメントでは、メッセージは不変でなければならないことを指定しています。 Javaのリストが変更可能な場合、これはどのようにOKですか?akka不変のメッセージリストを最終的に参照します
http://doc.akka.io/docs/akka/2.0/java/untyped-actors.html
ただ、コードを読んで、あなたは彼らがリストが不変であることを確認していることがわかります。
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;
}
}
OK、今私は愚かな感じ。それは本当にありがたいことでした。 – JeffV
Collections.unmodifiableList(values)の代わりにCollections.unmodifiableList(new ArrayList(values))を実際に使用する必要がありますか? –
Bouncner
コンストラクタが呼び出されたときに配列 'values'に格納された値を保持したい場合は、@Bouncer yesを指定します。それ以外の場合、他の誰かが元の配列を変更すると、 'this.values'も同様に変更されます。 –