2

JavaBeansの規則の1つは次のとおりです。

セッターのリターンタイプはvoidである必要があります。

または、少なくともそれはほとんどの人が言うことです。私の質問は:それは本当に無効である必要がありますか?次のようにメソッドをチェーンできるので、 「void」ではなく「this」を返すのが好きです。

student.setName("Tom").setAge(15);

「void」ではなく「this」を返す場合、Springコンテナやサーブレットコンテナ、またはJava Beansを使用するものに問題はありますか?

4

2 に答える 2

4

はい、setter の戻り値の型は、それを Bean プロパティとして認識して a を返すために必要voidです。メソッド名と引数の型を直接検査するだけの API は、非 void セッターで機能しますが、に依存するものはすべて機能しません。java.beans.IntrospectorPropertyDescriptorIntrospector

これに対する回避策の良い例は、Amazon Web Services SDK です。これは、通常のメソッドpublic void setSomething(有効な Java Bean になる) と、.public X withSomethingthis

Student s = new Student().withName("Tom").withAge(15);
于 2013-02-09T11:21:13.597 に答える
-2

確かに、SET メソッドで設定されたオブジェクトを返す別のプライベート メソッドを追加し、この新しいメソッドをpublic void set()で呼び出すことができます。

于 2013-02-09T11:06:44.543 に答える