4

昨日から Java の学習を始めたわけではありませんが、突然、元にvoid戻れるのであれば、なぜメソッドを使用するのでしょうthisか? と思いました。そうすれば、オブジェクトのメソッド呼び出しを連鎖させ、コードをより読みやすくすることができます (このアプローチはすでに人気を得ていることを知っていますが、ほとんどが不変オブジェクトであり、Java Beansの規則については忘れておきましょう)。私が必要だと思う唯一のケースvoidは、静的メソッドです。

4

1 に答える 1

14

おそらく、いくつかのメソッドが何か (ある種の戻り値) を伝える必要があることを受け入れるでしょう。「実際に何も返したくない場合を除き、戻りたい値を返すというのは人工的で鈍いようです。その場合はthis代わりに戻りますが、それが静的メソッドでない限り、戻りvoidます」.

どうですか:

  • 何かを返すことが適切な場合は、それを返します
  • そうでない場合は、しないでください
  • (「流暢な」API が本当に理にかなっている場合には、いくらかの蠢く余地があります)

また、継承を考えてください。仮想メソッドがあるFoo()場合、戻り値の型はFooの宣言型である必要があります。

public virtual SomeType Foo() {...}

をサブクラスSomeType化し、Bar : SomeTypeのインスタンスを持っているとしますBar

Bar obj = new Bar();
obj.Foo().SomeOtherMethodOnBar(); // ERROR hey, where did my Bar go!?!?!

ポリモーフィズムは流暢な API を尊重しません。

最終的な考えとして、実際にメソッドを連鎖させたくない場合は、すべての「ポップ」を考えてみてください...

于 2013-05-14T10:15:09.353 に答える