Latest web development tutorials
×

Java หลักสูตร

Java หลักสูตร Java แนะนำโดยย่อ Java การกำหนดค่าการพัฒนาสภาพแวดล้อม Java พื้นฐานไวยากรณ์ Java วัตถุและการเรียน Java ชนิดข้อมูลพื้นฐาน Java ประเภทตัวแปร Java การปรับเปลี่ยน Java ผู้ประกอบการ Java โครงสร้างห่วง Java สาขาโครงสร้าง Java Number หมวดหมู่ Java Character หมวดหมู่ Java String หมวดหมู่ Java StringBuffer Java แถว Java วันที่เวลา Java นิพจน์ปกติ Java ทาง Java Stream,File,IO Java Scanner หมวดหมู่ Java การจัดการข้อยกเว้น

Java เชิงวัตถุ

Java สืบทอด Java Override/Overload Java polymorphism Java ระดับนามธรรม Java บรรจุภัณฑ์ Java อินเตอร์เฟซ Java บรรจุภัณฑ์

Java การสอนที่ทันสมัย

Java โครงสร้างข้อมูล Java คอลเลกชันกรอบ Java ยาชื่อสามัญ Java การทำให้เป็นอันดับ Java เขียนโปรแกรมเครือข่าย Java ส่ง Email Java การเขียนโปรแกรมแบบมัลติเธรด Java Appletรากฐาน Java เอกสารความคิดเห็น Java ตัวอย่าง Java 8 คุณสมบัติใหม่ Java MySQL สัมพันธ์

การแสดงออก Java 8 แลมบ์ดา

Java 8 คุณสมบัติใหม่ Java 8 คุณสมบัติใหม่


การแสดงออกแลมบ์ดายังสามารถเรียกว่าปิดซึ่งคือการส่งเสริมคุณลักษณะใหม่ที่สำคัญที่สุดของ Java 8 ปล่อย

แลมบ์ดาได้รับอนุญาตให้ทำงานเป็นพารามิเตอร์ของวิธีการที่ (ฟังก์ชั่นผ่านเป็นพารามิเตอร์เข้าสู่วิธีการที่ก)

การแสดงออกแลมบ์ดาสามารถทำให้การใช้งานของรหัสที่จะกลายเป็นง่ายขึ้นและมีขนาดกะทัดรัด

ไวยากรณ์

แลมบ์ดาไวยากรณ์การแสดงออกเป็นดังนี้:

(parameters) -> expression
或
(parameters) ->{ statements; }

ต่อไปนี้เป็นลักษณะที่สำคัญของการแสดงออกแลมบ์ดา:

  • ค่าพารามิเตอร์ประจำตัวประชาชนไม่จำเป็นต้องประกาศชนิดของพารามิเตอร์คอมไพเลอร์สามารถแบบครบวงจร: ตัวเลือกประกาศประเภท
  • พารามิเตอร์ตัวเลือกในวงเล็บ: พารามิเตอร์ที่กำหนดไว้โดยไม่ต้องวงเล็บ แต่จำนวนของพารามิเตอร์ที่จะต้องมีการกำหนดไว้ในวงเล็บ
  • วงเล็บตัวเลือก: ถ้าร่างกายมีคำสั่งที่คุณไม่จำเป็นต้องจัดฟัน
  • คำหลักผลตอบแทนทางเลือก: ถ้าเรื่องเป็นเพียงหนึ่งในการแสดงออกที่ส่งกลับค่าคอมไพเลอร์จะกลับค่าวงเล็บต้องระบุแสดงออกชัดเจนว่าส่งกลับค่า

แลมบ์ดาแสดงออกตัวอย่าง

ในแฟ้ม Java8Tester.java ป้อนรหัสต่อไปนี้:

public class Java8Tester {
   public static void main(String args[]){
      Java8Tester tester = new Java8Tester();
		
      // 类型声明
      MathOperation addition = (int a, int b) -> a + b;
		
      // 不用类型声明
      MathOperation subtraction = (a, b) -> a - b;
		
      // 大括号中的返回语句
      MathOperation multiplication = (int a, int b) -> { return a * b; };
		
      // 没有大括号及返回语句
      MathOperation division = (int a, int b) -> a / b;
		
      System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
      System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
      System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
      System.out.println("10 / 5 = " + tester.operate(10, 5, division));
		
      // 不用括号
      GreetingService greetService1 = message ->
      System.out.println("Hello " + message);
		
      // 用括号
      GreetingService greetService2 = (message) ->
      System.out.println("Hello " + message);
		
      greetService1.sayMessage("w3big");
      greetService2.sayMessage("Google");
   }
	
   interface MathOperation {
      int operation(int a, int b);
   }
	
   interface GreetingService {
      void sayMessage(String message);
   }
	
   private int operate(int a, int b, MathOperation mathOperation){
      return mathOperation.operation(a, b);
   }
}

การดำเนินงานของสคริปดังกล่าวข้างต้นออกเป็น:

$ javac Java8Tester.java 
$ java Java8Tester
10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello w3big
Hello Google

ใช้การแสดงออกแลมบ์ดาที่จะต้องทราบจุดต่อไปนี้:

  • การแสดงออกแลมบ์ดาใช้เป็นหลักในการเชื่อมต่อสายความละเอียดวิธีการที่จะดำเนินการเช่นวิธีง่ายๆในการติดต่อ ในตัวอย่างข้างต้นเราจะใช้ประเภทต่างๆของการแสดงออกแลมบ์ดาเพื่อกำหนดวิธีการ MathOperation อินเตอร์เฟซ จากนั้นเรากำหนดดำเนินการ sayMessage
  • แลมบ์ดาแสดงออกวิธีการที่ไม่ระบุชื่อจะช่วยลดความยุ่งยากในการใช้งานของฟังก์ชั่นและได้รับของ Java ที่เรียบง่าย แต่มีประสิทธิภาพความสามารถในการเขียนโปรแกรม

ขอบเขตตัวแปร

การแสดงออกแลมบ์ดาสามารถอ้างถึงตัวแปรท้องถิ่นสุดท้ายหรือรอบสุดท้ายซึ่งหมายความว่าคุณไม่สามารถแก้ไขคำนิยามของตัวแปรนอกเขตอำนาจแลมบ์ดาภายในข้อผิดพลาดรวบรวมไว้เป็นอย่างอื่น

ในแฟ้ม Java8Tester.java ป้อนรหัสต่อไปนี้:

public class Java8Tester {

   final static String salutation = "Hello! ";
   
   public static void main(String args[]){
      GreetingService greetService1 = message -> 
      System.out.println(salutation + message);
      greetService1.sayMessage("w3big");
   }
	
   interface GreetingService {
      void sayMessage(String message);
   }
}

การดำเนินงานของสคริปดังกล่าวข้างต้นออกเป็น:

$ javac Java8Tester.java 
$ java Java8Tester
Hello! w3big

Java 8 คุณสมบัติใหม่ Java 8 คุณสมบัติใหม่