this
Javaでオブジェクトを構築する際にメソッドに引数として渡しても大丈夫ですか?
こうしようと思うと不安になるのですが、それが絶対に間違っているのかどうかはわかりません。次の架空の例を見てください。
public final class A {
private final B b;
private final List<String> words;
public A(B b) {
this.b = b;
words = new ArrayList<String>();
for(int i = 0; i < 10; i++) {
words.add(b.getNextStringFromUser(this));
}
}
public List<String> getWords() {
return words;
}
}
public class B {
// returns a String chosen by the user based on the current state of A
public String getNextStringFromUser(A a) {
List<String> wordsSoFar = a.getWords();
// ... omitted
}
}
これを行うことが正しいことであると私が考えることができるケースは、コードの残りの部分の観点から不変である可能性があるオブジェクトを構築したい場合ですが、コンストラクターが状況に応じて異なるコースを取る可能性がある場合です。これまでに指定された状態について (部分的に構築されたオブジェクトの状態について話すことが理にかなっている場合)。上記の例では、ユーザーはこれまでに選択した文字列に基づいて文字列を選択し、それらがすべて選択されると、このオブジェクトが再び変更されることはありません。
この種のことはOK/お勧めですか?ありがとう。