Function<T, R> Java 8 Example

Kachain Jantalat
2 min readFeb 6, 2023

--

What is Function in Java 8 ?

Function<T, R> คือ Functional Interface เพื่อให้ง่ายต่อการใช้งานและสะดวกโดย จะมีการใส่ค่า Input(T) และทำงานตามคำสั่งที่เรากำหนดไว้ และคืนค่า Output (R) ออกมา T และ R สามารถประกาศเป็น Type ที่เราต้องการได้เลย

  • T — Type of the input to the function.
  • R — Type of the result of the function.

INTERFACE

@FunctionalInterface 
public interface Function<T, R> {
R apply(T t);
}

Example 1

Function<String, Integer> func = x -> x.length();
Integer apply = func.apply("Kachain");
System.out.println(apply); // result 7

จากตัวอย่างข้างต้นคือ การนำ Fuction<T,R> มาประยุกต์ใช้ และผลลัพธ์ที่ได้เมื่อเรียก apply หมายถึงการเรียกใช้ x.length(); ทำงาน โดยรับ parameter “Kachain” = 7

Example 2

เราสามารถสร้าง function แล้วกำหนดการทำงานเองได้ด้วยนะครับ

public static int myMethod(String name) {
// do stup here
Int length = name.length();
return length + 1;
}

Function<String, Integer> func = x -> myMethod(x)
Integer apply = func.apply("Kachain");
System.out.println(apply); // result 8

Example 3

เราสามารถส่ง function เป็น argrument ไปได้ด้วยนะครับแล้วเรียก apply ในการใช้งานเลยครับ

public static int myMethod1(String name) {
// do stup here
Int length = name.length();
return length + 1;
}
public static int myMethod2(String name, Function<String,Int> func) {
// do stup here
Int length = name.length();
Int apply = func.apply(name)
return apply - length;
}
Function<String, Integer> func = x -> myMethod1(x)
Int result = myMethod2("Kachain", func)
System.out.println(result); // result 1

Additional

นอกจากนี้ยังสามารถ เรียกใช้งานต่อกันได้ จะเรียกว่า Chain Function นะครับซึ่งจะเรียก method ที่ชื่อว่า andThen ได้เลยนะครับ โดย parameter จะเป็น function นะคร้าบบบ

public static int myMethod1(String name) {
// do stup here
Int length = name.length();
return length + 1;
}
public static int myMethod2(Int length) {
return length + 2;
}
Function<String, Integer> func1 = x -> myMethod1(x)
Function<Integer, Integer> func2 = x -> myMethod2(x)
Int result = func1.andThen(func2).apply("Kachain")
System.out.println(result); // result 10

Conclusion

ส่วนมากแล้วจะนิยม ไปใช้กับ func ที่ต้องการส่ง function interface เขามาเรียกใช้ โดยจะให้ ผู้เรียกใช้สร้าง func นั้นขึ้นมาเองและกำหนดการทำงานเองได้ หวังว่าจะเป็นประโยชน์ต่อการใช้งานนะคร้าบบบบ

อ่าน BiFunction -> https://medium.com/@kachain/java-8-bifunction-examples-96b7d330f4e9

--

--

Kachain Jantalat

I am a software engineer that has a passionate in programming and development