1

このコード行がどのように機能するかを誰でも説明できますか:

Rational sum = a.add(b).add(c);

オブジェクト b (引数) がメソッドを受け取る方法がわかりません。

4

2 に答える 2

4

これはメソッド連鎖と呼ばれます。メソッドadd()は実際には、現在変更されているオブジェクトの参照、またはメソッドが呼び出されたのと同じ型の新しいオブジェクトを返します。によって参照されるオブジェクトaBigIntegerであるとします。a.add(b)BigIntegerを呼び出すと、値がであるオブジェクトが返されるため、そのオブジェクトを再度a+b呼び出すことができます。.add(c)

 Rational sum = a.add(b).add(c);
 // is equivalent to
 Rational temp = a.add(b);
 Rational sum = temp.add(c);

メソッドの連鎖は必要ありません。可読性が向上し、ソース コードの量が減る可能性があるだけです。これは流暢なインターフェイスを構築するための中心的な概念です。

サンプル図:

ここに画像の説明を入力

このプラクティスは主にBuilder パターンで使用されます。このパターンは API 自体のStringBuilderクラスにあります。

オブジェクト b (引数) がメソッドを受け取る方法がわかりません。

いいえ、あなたの理解は間違っています。オブジェクトのa.add(b)メソッドを呼び出しadd()、オブジェクトaの参照を渡していることを意味しますb。メソッドが返す結果のオブジェクトa.add(b)は と同じ型でaあり、返されたオブジェクトのメソッドを連続して呼び出して、.add(c)オブジェクトの参照cをそのメソッドに渡します。

于 2013-07-27T13:07:29.070 に答える