Java วิธีที่ 8 เริ่มต้น
Java 8 วิธีการอินเตอร์เฟซที่เริ่มต้นใหม่
ใส่เพียงแค่วิธีการเริ่มต้นเป็นอินเตอร์เฟซที่สามารถดำเนินการวิธีการและไม่จำเป็นต้องมีระดับการดำเนินการที่จะใช้วิธีการของ
เราเพียงแค่หน้าชื่อของวิธีการเพื่อเพิ่มคำหลักเริ่มต้นที่จะใช้วิธีการเริ่มต้น
ทำไมต้องคุณลักษณะนี้?
ก่อนที่อินเตอร์เฟซที่เป็นดาบสองคมเพื่อประโยชน์ของนามธรรมมากกว่าสำหรับข้อบกพร่องในการเขียนโปรแกรมที่เฉพาะเจาะจงก็คือว่าเมื่อคุณจำเป็นต้องปรับเปลี่ยนอินเตอร์เฟซที่จำเป็นในการปรับเปลี่ยนทั้งชั้นที่ใช้อินเตอร์เฟซ, คอลเลกชัน Java ปัจจุบันกรอบ 8 ก่อนที่จะวิธีการ foreach ไม่มี มักจะคิดว่าการแก้ปัญหาใน JDK เพิ่มวิธีการใหม่และการใช้งานอินเตอร์เฟซที่เกี่ยวข้อง แต่รุ่นที่ได้รับการปล่อยตัวออกมาก็เป็นได้ในเวลาเดียวกันการเพิ่มวิธีการใหม่เพื่ออินเตอร์เฟซที่ไม่ได้ส่งผลกระทบต่อการใช้งานที่มีอยู่ ดังนั้นการแนะนำของวิธีการเริ่มต้น วัตถุประสงค์ของพวกเขาคือการแก้ปัญหาการปรับเปลี่ยนที่มีอยู่และการดำเนินงานของอินเตอร์เฟซใช้ไม่ได้กับปัญหาที่เกิดขึ้น
ไวยากรณ์
ไวยากรณ์วิธีการเริ่มต้นจะเป็นดังนี้:
public interface vehicle { default void print(){ System.out.println("我是一辆车!"); } }
วิธีการเริ่มต้นหลาย
อินเตอร์เฟซที่มีวิธีการเริ่มต้นให้พิจารณากรณีที่มีระดับให้ดำเนินการเชื่อมต่อหลายและการเชื่อมต่อเหล่านี้มีวิธีการเริ่มต้นเดียวกันตัวอย่างต่อไปนี้แสดงให้เห็นถึงการแก้ปัญหาสำหรับสถานการณ์นี้:
public interface vehicle { default void print(){ System.out.println("我是一辆车!"); } } public interface fourWheeler { default void print(){ System.out.println("我是一辆四轮车!"); } }
วิธีแรกคือการสร้างวิธีการเริ่มต้นของคุณเองเพื่อแทนที่วิธีการเริ่มต้นของการเขียนใหม่อินเตอร์เฟซ:
public class car implements vehicle, fourWheeler { default void print(){ System.out.println("我是一辆四轮汽车!"); } }
วิธีการแก้ปัญหาที่สองสามารถใช้สุดที่จะเรียกวิธีการเริ่มต้นอินเตอร์เฟซที่ระบุ
public class car implements vehicle, fourWheeler { default void print(){ vehicle.super.print(); } }
วิธีการเริ่มต้นคงที่
Java 8 คุณสมบัติก็คืออินเตอร์เฟซสามารถประกาศ (และอาจจัดให้มีการดำเนินงาน) วิธีการคง ตัวอย่างเช่น:
public interface vehicle { default void print(){ System.out.println("我是一辆车!"); } // 静态方法 static void blowHorn(){ System.out.println("按喇叭!!!"); } }
วิธีการเริ่มต้นของตัวอย่าง
เราสามารถใช้รหัสต่อไปนี้เพื่อหาข้อมูลเกี่ยวกับวิธีการเริ่มต้นคุณสามารถวางแฟ้มรหัส Java8Tester.java นี้:
public class Java8Tester { public static void main(String args[]){ Vehicle vehicle = new Car(); vehicle.print(); } } interface Vehicle { default void print(){ System.out.println("我是一辆车!"); } static void blowHorn(){ System.out.println("按喇叭!!!"); } } interface FourWheeler { default void print(){ System.out.println("我是一辆四轮车!"); } } class Car implements Vehicle, FourWheeler { public void print(){ Vehicle.super.print(); FourWheeler.super.print(); Vehicle.blowHorn(); System.out.println("我是一辆汽车!"); } }
การดำเนินงานของสคริปดังกล่าวข้างต้นออกเป็น:
$ javac Java8Tester.java $ java Java8Tester 我是一辆车! 我是一辆四轮车! 按喇叭!!! 我是一辆汽车!