最近、このタイプの構文を利用するコード (Amazon Hadoop コード) を見たことがあります。
Foo bar = new Foo().setX(10).setY(11);
甘いなと思ったのでやってみることにしました。代わりに私のsetX()型関数を返して、それらすべてを入れました。これはうまくいきました。継承で試してみると、いくつかの奇妙な結果が得られました。Foovoidreturn this;
具体例を挙げましょうLocation。x と y の 2 つのフィールドを持つ 2 つのクラスがあります。そして、3 番目のフィールド zLocation3Dを継承して追加する別のクラス。Locationすべてのフィールドは、セッターに対して上記のメソッドを使用します。
今、新しい location3D インスタンスを作成し、そのフィールドを設定したいのですが、何が起こるかです
new Location3D().setZ(7).setY(6).setX(5)
動作中
new Location3D().setX(7).setY(6).setZ(5)
しません。
by が機能しないということは、 from から返されるsetY(6)のはLocationオブジェクトではなくlocation3Dオブジェクトであるため、メソッドがないというsetZ()ことです!
この長いイントロの後、私の質問は次のとおりです。呼び出し元にオブジェクトのキャストを強制することなく、この形式の「セッター文字列」を継承で機能させることはできますか? もしそうならどのように?
また、これには「セッターストリング」よりも優れた用語があると思いますが、それは何ですか?