これを暗黙的に返すJava voidメソッド


20

「this」型を返すセッターメソッドについては、SOに関するいくつかの議論があります。そして、java 7にはこれを返すvoidメソッドの提案があったようです。しかし、この提案はJava 7の機能に到達できませんでした。この提案がJava 8またはそれ以降に移行したか、完全に破棄されたかはわかりませんでした。それは...ですか?

参照リンク-/programming/31584/design-java-and-returning-self-reference-in-setter-methods


3
あなたが質問で言及した議論へのいくつかのリンクを持っていることはありがたいです。
ManuPK

私の質問を編集
タルン

回答:


11

その原因を見つけることはできませんが、この機能は完全に削除されたと思います。私が考えることができる多くの理由があります:

  • パフォーマンス -各voidメソッドには余分なリターンオペコードがあり、このメソッドが呼び出されるすべての場所popは、メソッドチェーンを実際に使用しない限り暗黙的に必要です。

  • 後方互換性 -すべてのvoidメソッドのコントラクトが変更されたため、この機能に対してコンパイルすると突然コードの後方互換性が失われます

もちろん、これはコンパイラーによって実装することもできます(メソッドを呼び出すvoid?おそらくthis、暗黙的にこれを追加させてください)、このアプローチの欠点はわかりません。


1
コンパイラはこの機能をサポートする必要があり(したがって、呼び出し元のコードがコンパイルされます)、呼び出されたオブジェクトを保存し、呼び出し元のメソッドを変更せずに再度使用できます。
ピーターローリー

この種のOpenJDKの機能は、JDK拡張提案(JEP)として扱われるようになり、実際にはこれはリストされなくなりました(そして、私はかなり長い間議論していませんでした)。
マルタインVerburg

3

プロジェクトCOINの2009年の具体化のためにこれが正式に提案されたことはないと思います。 このページは、すべての提案をリストすることを意図しており、対応する提案は表示されません。

それが提案されなかった場合、それは考慮されなかっただろう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.