Metode Java batal secara implisit mengembalikan ini


20

ada beberapa diskusi tentang SO tentang metode penyetel yang mengembalikan tipe "ini". Dan sepertinya java 7 memiliki proposal metode batal mengembalikan ini. Tetapi proposal ini tidak dapat membuatnya ke fitur java 7. Saya tidak dapat menemukan apakah proposal ini dipindahkan ke java 8 atau masa depan atau telah sepenuhnya dibuang. Apakah itu?

Tautan ref - /programming/31584/design-java-and-returning-self-reference-in-setter-methods


3
Akan sangat berterima kasih memiliki beberapa tautan ke diskusi yang telah Anda sebutkan dalam pertanyaan, sehingga akan bermanfaat bagi orang lain dan akan membantu mereka lebih memahami pertanyaan itu.
ManuPK

mengedit pertanyaan saya
Tarun

Jawaban:


11

Sepertinya saya tidak dapat menemukan sumber itu, tetapi saya percaya fitur ini telah dihapus sepenuhnya. Ada banyak alasan yang dapat saya pikirkan:

  • kinerja - setiap voidmetode sekarang memiliki opcode pengembalian ekstra dan setiap tempat di mana metode ini disebut perlu implisit popkecuali benar-benar menggunakan metode chaining

  • kompatibilitas mundur - kompilasi terhadap fitur ini tiba-tiba membuat kode mundur tidak kompatibel karena kontrak setiap voidmetode telah berubah

Tentu saja ini juga dapat diimplementasikan oleh kompiler ( memanggil metode void? Anda mungkin bermaksud this, izinkan saya menambahkan ini secara implisit ), tidak tahu apa kerugian dari pendekatan ini.


1
Kompiler harus mendukung fitur ini (sehingga kode panggilan akan dikompilasi) dan itu dapat menyimpan objek yang dipanggil dan menggunakannya lagi tanpa metode panggilan diubah.
Peter Lawrey

Fitur untuk OpenJDK seperti ini sekarang ditangani sebagai JDK Enhancement Proposals (JEPs) dan memang ini tidak lagi terdaftar (dan saya belum melihatnya dibahas dalam beberapa waktu).
Martijn Verburg

3

Saya tidak percaya ini pernah diusulkan secara formal untuk proyek COIN tahun 2009. Halaman ini bermaksud untuk mendaftar semua proposal, dan saya tidak dapat melihat satu yang sesuai.

Jika tidak diusulkan, itu tidak akan dipertimbangkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.