Apa itu closure? Ini seharusnya disertakan dalam Java 7. (Penutupan dibahas untuk dimasukkan di Java 7, tetapi pada akhirnya tidak disertakan. -Ed) Adakah yang bisa memberi saya beberapa referensi yang dapat diandalkan dari mana saya dapat mempelajari hal-hal tentang closure?
105
Closure adalah blok kode yang dapat direferensikan (dan diedarkan) dengan akses ke variabel lingkup yang melingkupinya.
Sejak Java 1.1, kelas dalam anonim telah menyediakan fasilitas ini dengan cara yang sangat bertele-tele. Mereka juga memiliki batasan hanya dapat menggunakan
final
(dan pasti ditugaskan) variabel lokal. (Perhatikan, bahkanfinal
variabel non- lokal berada dalam cakupan, tetapi tidak dapat digunakan.)Java SE 8 dimaksudkan untuk memiliki versi yang lebih ringkas ini untuk antarmuka metode tunggal *, yang disebut "lambda". Lambda memiliki batasan yang hampir sama dengan kelas dalam anonim, meskipun beberapa detail bervariasi secara acak.
Lambda sedang dikembangkan di bawah Proyek Lambda dan JSR 335 .
* Awalnya desainnya lebih fleksibel dengan memungkinkan tipe Single Abstract Methods (SAM). Sayangnya desain baru kurang fleksibel, tetapi berusaha untuk membenarkan implementasi yang diizinkan dalam antarmuka.
sumber
Menurut Tom Hawtin
Sekarang saya mencoba untuk meniru contoh penutupan JavaScript di Wikipedia , dengan terjemahan " lurus " ke Java, dengan harapan dapat berguna:
Sekarang bagian java: Function1 adalah antarmuka "Functor" dengan arity 1 (satu argumen). Penutupan adalah kelas yang mengimplementasikan Function1, Functor konkret yang bertindak sebagai fungsi (int -> int). Dalam metode main () saya hanya memberi contoh foo sebagai objek Penutupan, mereplikasi panggilan dari contoh JavaScript. Kelas IntBox hanyalah wadah sederhana, ini berperilaku seperti array 1 int:
Ini mencetak:
sumber
Silakan lihat halaman wiki ini untuk definisi closure.
Dan halaman ini untuk penutupan di Java 8: http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html
Lihat juga Tanya Jawab ini: Penutupan di Java 7
sumber
Java Closures akan menjadi bagian dari J2SE 8 dan akan dirilis pada akhir 2012.
Dukungan penutupan Java 8 mencakup konsep Ekspresi Lambda, Referensi Metode, Referensi Pembuat, dan Metode Default.
Untuk informasi lebih lanjut dan contoh kerja untuk ini, silakan kunjungi: http://amitrp.blogspot.in/2012/08/at-first-sight-with-closures-in-java.html
sumber
Ya, Closure (Lambda Expressions) adalah fitur baru dengan rilis Java SE 8 mendatang. Anda bisa mendapatkan info lebih lanjut tentang ini dari tautan di bawah ini: http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
sumber
Implementasi penutupan untuk Java 5, 6, dan 7
http://mseifed.blogspot.se/2012/09/bringing-closures-to-java-5-6-and-7.html
Ini berisi semua yang bisa diminta untuk ...
sumber