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 คุณสมบัติใหม่


อินเตอร์เฟซฟังก์ชั่น (Functional อินเตอร์เฟซ) เป็นวิธีการของการมีอินเตอร์เฟซที่ร่วมกัน

อินเตอร์เฟซที่ฟังก์ชั่นที่สามารถแปลงโดยปริยายที่จะแสดงออกแลมบ์ดา

อินเตอร์เฟซที่ฟังก์ชั่นสามารถรองรับฟังก์ชั่นที่มีอยู่แลมบ์ดามิตร

ก่อน JDK 1.8 มีอินเตอร์เฟซฟังก์ชั่น:

  • java.lang.Runnable
  • java.util.concurrent.Callable
  • java.security.PrivilegedAction
  • java.util.Comparator
  • java.io.FileFilter
  • java.nio.file.PathMatcher
  • java.lang.reflect.InvocationHandler
  • java.beans.PropertyChangeListener
  • java.awt.event.ActionListener
  • javax.swing.event.ChangeListener

JDK 1.8 ใหม่เพิ่มฟังก์ชั่นอินเตอร์เฟซ:

  • java.util.function

java.util.function มันมีชั้นเรียนหลายฟังก์ชั่นเพื่อสนับสนุนการเขียนโปรแกรม Java, แพคเกจการทำงานของอินเตอร์เฟซนี้:

เลขที่ อินเตอร์เฟซและคำอธิบาย
1 BiConsumer <T, U>

เพราะมันหมายถึงการดำเนินงานที่จะป้อนพารามิเตอร์สองและไม่พบผลลัพธ์ใด ๆ

2 BiFunction <T, U, R>

เพราะมันหมายถึงวิธีการที่ยอมรับป้อนพารามิเตอร์สองและผลตอบแทน

3 BinaryOperator <T>

ทำหน้าที่ในนามของผู้ประกอบการในสองชนิดเดียวกันของการดำเนินงานและผู้ประกอบการส่งกลับชนิดเดียวกันของผล

4 BiPredicate <T, U>

เพราะมันหมายถึงแบบบูลวิธีมูลค่าสองพารามิเตอร์

5 BooleanSupplier

มันหมายถึงค่าบูลีนผลของผู้ให้บริการ

6 ผู้บริโภค <T>

หมายถึงการยอมรับพารามิเตอร์สำหรับการป้อนและไม่มีการดำเนินการกลับมา

7 DoubleBinaryOperator

มันจะทำหน้าที่ในนามของผู้ประกอบการดำเนินงานค่าคู่สองและผลตอบแทนผลของค่าคู่

8 DoubleConsumer

ยอมรับการดำเนินการในนามของค่า double ของพารามิเตอร์และไม่กลับผล

9 DoubleFunction <R>

การยอมรับในนามของพารามิเตอร์วิธีคู่และผลตอบแทน

10 DoublePredicate

เพราะมันหมายถึงค่าบูลีนของพารามิเตอร์มีวิธีค่า double

11 DoubleSupplier

คุ้มค่าหมายถึงผู้ให้บริการโครงสร้างคู่

12 DoubleToIntFunction

ยอมรับการป้อนข้อมูลประเภทคู่และส่งกลับผล int

13 DoubleToLongFunction

ยอมรับการป้อนข้อมูลประเภทคู่และส่งกลับชนิดยาวของผล

14 DoubleUnaryOperator

รับพารามิเตอร์สำหรับประเภทเดียวกันของคู่ชนิดกลับยังเป็นคู่

15 ฟังก์ชั่น <T, R>

รับพารามิเตอร์การป้อนข้อมูลและผลตอบแทน

16 IntBinaryOperator

รับสองพารามิเตอร์กับ int ชนิดเดียวกันประเภทค่าตอบแทนยังเป็น int

17 IntConsumer

ยอมรับป้อนพารามิเตอร์ int ไม่มีค่าตอบแทน

18 IntFunction <R>

ยอมรับพารามิเตอร์สำหรับการป้อนชนิด int และผลตอบแทน

19 IntPredicate

: ยอมรับพารามิเตอร์การป้อนข้อมูล int และส่งกลับค่าบูลีนผล

20 IntSupplier

ไม่มีข้อโต้แย้งและส่งกลับผล int

21 IntToDoubleFunction

รับข้อมูลชนิด int และผลตอบแทนที่เป็นผลมาจากประเภทคู่

22 IntToLongFunction

รับข้อมูลชนิด int และส่งกลับชนิดยาวของผล

23 IntUnaryOperator

รับพารามิเตอร์สำหรับ int ชนิดเดียวกันประเภทค่าตอบแทนยังเป็น int

24 LongBinaryOperator

มันรับสองตัวแปรที่มีชนิดเดียวกันยาวส่งกลับชนิดเป็นเวลานาน

25 LongConsumer

มันต้องใช้เวลาชนิดยาวของพารามิเตอร์การป้อนข้อมูลที่ไม่มีค่าตอบแทน

26 LongFunction <R>

ที่จะยอมรับชนิดยาวของพารามิเตอร์การป้อนข้อมูลและผลตอบแทน

27 LongPredicate

R ใช้พารามิเตอร์สำหรับการป้อนยาวและผลตอบแทนผลประเภทค่าบูลีน

28 LongSupplier

ไม่มีค่าพารามิเตอร์และส่งกลับค่าผลของชนิดยาว

29 LongToDoubleFunction

ที่จะยอมรับชนิดยาวเข้าและผลตอบแทนที่เป็นผลมาจากประเภทคู่

30 LongToIntFunction

ที่จะยอมรับชนิดยาวเข้าและส่งกลับผล int

วันที่ 31 LongUnaryOperator

มันรับพารามิเตอร์สำหรับประเภทเดียวกันของนานกลับมาชนิดเป็นเวลานาน

32 ObjDoubleConsumer <T>

ยอมรับชนิดของวัตถุและประเภทคู่ป้อนพารามิเตอร์ค่าส่งกลับไม่มี

33 ObjIntConsumer <T>

ยอมรับชนิดของวัตถุและป้อนพารามิเตอร์ int ไม่มีค่าตอบแทน

34 ObjLongConsumer <T>

ยอมรับชนิดของวัตถุและชนิดยาวของพารามิเตอร์การป้อนค่าส่งกลับไม่มี

35 กริยา <T>

รับพารามิเตอร์การป้อนข้อมูลและส่งกลับผลบูลีน

36 ซัพพลายเออร์ <T>

ไม่มีค่าพารามิเตอร์และผลตอบแทน

37 ToDoubleBiFunction <T, U>

มันรับป้อนพารามิเตอร์ที่สองและผลตอบแทนที่เป็นผลมาจากประเภทคู่

38 ToDoubleFunction <T>

รับพารามิเตอร์การป้อนข้อมูลและส่งกลับผลมาจากประเภทคู่

39 ToIntBiFunction <T, U>

มันรับป้อนพารามิเตอร์ที่สองและผลตอบแทนที่เป็นผลมาจากชนิด int

40 ToIntFunction <T>

รับพารามิเตอร์การป้อนข้อมูลและส่งกลับผลมาจากชนิด int

41 ToLongBiFunction <T, U>

มันรับป้อนพารามิเตอร์สองและผลตอบแทนชนิดยาวของผล

42 ToLongFunction <T>

รับพารามิเตอร์การป้อนข้อมูลและผลตอบแทนชนิดยาวของผล

43 UnaryOperator <T>

ยอมรับพารามิเตอร์ของ T ประเภทประเภทของค่าตอบแทนสำหรับที


อินสแตนซ์อินเตอร์เฟซที่ใช้งานได้

กริยา <T> อินเตอร์เฟซที่เป็นอินเตอร์เฟซการทำงานที่ยอมรับพารามิเตอร์สำหรับการป้อน T, ส่งกลับผลบูลีน

อินเตอร์เฟซที่มีวิธีการเริ่มต้นหลายจะรวมกันเป็นคำกริยาตรรกะที่ซับซ้อนอื่น ๆ (เช่น AND, OR, NOT)

อินเตอร์เฟซนี้จะใช้ในการทดสอบวัตถุเป็นจริงหรือเท็จ

เราสามารถจากตัวอย่างต่อไปนี้ (Java8Tester.java) เพื่อทำความเข้าใจการทำงานของอินเตอร์เฟซกริยา <T> ใช้:

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Java8Tester {
   public static void main(String args[]){
      List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
		
      // Predicate<Integer> predicate = n -> true
      // n 是一个参数传递到 Predicate 接口的 test 方法
      // n 如果存在则 test 方法返回 true
		
      System.out.println("输出所有数据:");
		
      // 传递参数 n
      eval(list, n->true);
		
      // Predicate<Integer> predicate1 = n -> n%2 == 0
      // n 是一个参数传递到 Predicate 接口的 test 方法
      // 如果 n%2 为 0 test 方法返回 true
		
      System.out.println("输出所有偶数:");
      eval(list, n-> n%2 == 0 );
		
      // Predicate<Integer> predicate2 = n -> n > 3
      // n 是一个参数传递到 Predicate 接口的 test 方法
      // 如果 n 大于 3 test 方法返回 true
		
      System.out.println("输出大于 3 的所有数字:");
      eval(list, n-> n > 3 );
   }
	
   public static void eval(List<Integer> list, Predicate<Integer> predicate) {
      for(Integer n: list) {
		
         if(predicate.test(n)) {
            System.out.println(n + " ");
         }
      }
   }
}

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

$ javac Java8Tester.java 
$ java Java8Tester
输出所有数据:
1 
2 
3 
4 
5 
6 
7 
8 
9 
输出所有偶数:
2 
4 
6 
8 
输出大于 3 的所有数字:
4 
5 
6 
7 
8 
9 

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