คุณสมบัติใหม่ของอินเทอร์เฟซการใช้งานของ Java 8 ในตัว
ในการโพสต์บล็อกก่อนหน้านี้ Lambda Expression เราได้กล่าวถึงอินเทอร์เฟซการทำงานที่จัดทำโดย Java 8 ในบทความนี้เราจะแนะนำอินเทอร์เฟซการทำงานพื้นฐานสี่ประการใน Java 8
สำหรับการอ้างอิงถึงวิธีการการพูดอย่างเคร่งครัดจะต้องมีการกำหนดอินเทอร์เฟซ ไม่ว่าเราจะทำงานอย่างไรมีเพียงสี่อินเทอร์เฟซที่เป็นไปได้ในการทำงาน
Java 8 จัดเตรียมแพ็คเกจอินเทอร์เฟซที่ใช้งานได้ java.util.function.*ซึ่งมีส่วนต่อประสานการทำงานจำนวนมากที่สร้างขึ้นใน Java 8 อย่างไรก็ตามโดยทั่วไปจะแบ่งออกเป็นสี่ประเภทพื้นฐาน:
อินเตอร์เฟสฟังก์ชัน (ฟังก์ชั่น)
การใช้ t เป็นอินพุตและ r เป็นเอาต์พุตมันยังมีวิธีเริ่มต้นรวมกับฟังก์ชั่นอื่น ๆ
@functionalInterfacepublic ฟังก์ชัน <t, r> {r ใช้ (t t);} รหัสตัวอย่าง
โมฆะคงที่สาธารณะหลัก (String [] args) {// ที่นี่เราใช้การอ้างอิงวิธี Java8, อินเตอร์เฟสการทำงานของฟังก์ชัน! ฟังก์ชั่น <สตริง, บูลีน> function = "hello java" :: endswith; System.out.println (function.apply ("java"));} อินเทอร์เฟซผู้บริโภค
ใช้ t เป็นอินพุตโดยไม่ต้องส่งคืนสิ่งใดแสดงการดำเนินการในพารามิเตอร์เดียว
@FunctionalInterfacepublic Interface Consumer <t> {Void Accept (T T);} รหัสตัวอย่าง
คลาส testDemo {// วิธีนี้ไม่มีค่าส่งคืน แต่มีพารามิเตอร์อินพุตโมฆะความสนุกสาธารณะ (String Str) {System.out.println (STR); }} คลาสสาธารณะ testFunctional {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {testDemo demo = testDemo ใหม่ (); // อินเทอร์เฟซประเภทผู้บริโภคเฉพาะพารามิเตอร์อินพุตไม่มีพารามิเตอร์เอาท์พุทผู้บริโภค <String> ผู้บริโภค = Demo :: Fun; consumer.accept (""); -
ผู้จัดหา
ไม่มีพารามิเตอร์อินพุตเท่านั้น t จะส่งคืนเอาต์พุต
@functionalInterfacepublic ผู้จัดหาอินเตอร์เฟส <t> {t get ();} รหัสตัวอย่าง
Public Class TestFunctional {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// อินเตอร์เฟสประเภทซัพพลายเออร์, พารามิเตอร์เอาต์พุตเท่านั้น, ไม่มีพารามิเตอร์อินพุต! ซัพพลายเออร์ <String> ซัพพลายเออร์ = "java 8" :: touppercase; System.out.println (Supplier.get ()); - อินเทอร์เฟซ assertional (predicate)
การใช้ T เป็นอินพุตและส่งคืนบูลีนเป็นเอาต์พุตอินเตอร์เฟสมีจำนวนวิธีเริ่มต้นจำนวนหนึ่งเพื่อรวมเพรดิเคตเข้ากับตรรกะที่ซับซ้อนอื่น ๆ (และหรือไม่ใช่)
@FunctionalInterfacepublic Interface Predicate <T> {การทดสอบบูลีน (t t);} รหัสตัวอย่าง
Public Class TestFunctional {โมฆะคงที่สาธารณะหลัก (String [] args) {// ยืนยันประเภทอินเตอร์เฟสประเภท มีพารามิเตอร์อินพุตพารามิเตอร์เอาท์พุทคือบูลีนเพรดิเคต <String> predicate = "Android" :: equalsignorecase; System.out.println (Predicate.test ("Android")); -ดังนั้นใน Java 8 เนื่องจากมีอินเทอร์เฟซที่ใช้งานได้สี่ประการข้างต้นจึงเป็นเรื่องยากสำหรับผู้ใช้ที่จะกำหนดอินเทอร์เฟซการทำงานใหม่!
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!