関数型インタフェース
関数型インタフェースは、ラムダ式やメソド参照の代入先になれるインタフェースのこと。
関数型インタフェースの条件は、高々一つの抽象メソドを持つインタフェースである。
@FunctionalIntefface
interface InterfaceName {
public returnType(void|int...) methodName(argumentList);
}
標準関数型インタフェース
ラムダ式
InterfaceName functionName = (argumentList) -> {処理};
例題
関数型インタフェース:Consumer
Consumer<String> cons = new Consumer<> {
@override
public void accept(String str) {
System.out.println(str);
}
}
ラムダ式
Consumer<String> (String str) -> {System.out.println(str); };
引数部分の記述
() -> {処理};
(str) -> {処理};
str -> {処理};
(str, n) -> {処理}
(String str, int n) -> {処理};
処理部分の記述
(引数) -> System.out.println(str);
(引数) -> {
System.out.println(str);
return n;
}
関数インタフェースIterable
import java.util.Arrays;
import java.util.list;
import java.util.function.Consumer;
public class LamdaTest {
public static void main(String[] args) {
List<string> sttrs = Arrays.asList("hoge", "fuga", "bar");
strs.forEach(new Consumer<String str) {
System.out.println(str);
}
}
}
public static void main(String[] args) {
List<String> strs = Arrays.asList("hoge", "fuga", "bar");
strs.forEach(str -> System.out.println(str));
public static void main(String[] args) {
List<String> strs = Arrays.asList("hoge", "fuga", "bar");
Consumer<String>cons = str -> System.out.println(str);
strs.forEach(cons);
}