java 8 新特性3-函数式接口
2023-09-27 14:22:13 时间
一 函数式接口
1.1 函数式接口
一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。建议在接口上方加上关键字@FunctionalInterface
案例:
1.接口
package function;
@FunctionalInterface
public interface MyFriends {
public void sayMessage(String name);
}
2.实现类
public class TestFriends {
public static void main(String[] args) {
//匿名内部类
test("bj", new MyFriends() {
@Override
public void sayMessage(String name) {
System.out.println("你好:"+name);
}
});
//表达式2
MyFriends myFriends=(x)->{ System.out.println("你好:"+x);};
myFriends.sayMessage("bj");
//lamda表达式
test("bj",(x)->{ System.out.println("你好:"+x);});
}
public static void test(String name,MyFriends my){
my.sayMessage(name);
}
}
二 java8 提供的常用4个函数式接口
2.1 生产型接口
Supplier<T>接口也被称为生产型接口,如果我们指定了接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据供我们使用。
生产型接口即:不用传参,但会返回一个参数 (01)。
public class TestPJiekou {
public static void main(String[] args) {
String s=getToUpper(()->{return "hello";});
System.out.println("s:"+s);
}
public static String getToUpper(Supplier<String> sup){
return sup.get();
}
}
2.2 消费型接口
Consumer<T>接口也被称为消费型接口,它消费的数据的数据类型由泛型指定
生产型接口即:用传参,不返回值 (10)。
public class TestCJiekou {
public static void main(String[] args) {
consumerData("nihao",(x)->{System.out.println("x:"+x);});
consumerData("nihao",(x)->{ System.out.println("t:"+x.toUpperCase());;},(x)->{System.out.println("x:"+x);});
}
public static void consumerData(String name, Consumer<String> con){
con.accept(name);
}
public static void consumerData(String name,Consumer<String> con1,Consumer<String> con2){
con1.andThen(con2).accept(name);
}
}
2.3 判断性接口
Predicate<T>接口通常用于判断参数是否满足指定的条件 。
判断型接口即:参数无限制,必须有返回值 (x1)。
public class TestPre {
public static void main(String[] args) {
boolean flag=check("ljf4",(x)->{return x.length()>3;});
System.out.println("flag:"+flag);
}
public static boolean check(String s, Predicate<String> pre){
return pre.test(s);
}
}
2.4 funcation接口
Function<T,R>接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值 。
function接口即:有参数值,有返回值 (1,1)。
代码:
public class TestFunction {
public static void main(String[] args) {
int k= res("ljf",(x)->{return x.length();});
System.out.println("k:"+k);
}
public static Integer res(String name, Function<String,Integer> fun1){
return fun1.apply(name);
}
}
相关文章
- Java和Php比较
- java核心技术卷I-接口
- Effective Java 第三版——44. 优先使用标准的函数式接口
- 树莓派上Java程序作为linux服务并开机自动启动
- Java Socket应用(二)——java中InetAddress的应用
- Java学习笔记之函数式接口 Stream流
- 《Java语言导学(原书第6版)》一练习
- [Java SE/Junit] 基于Java的单元测试框架Mockito
- Java之继承、抽象类、接口篇
- java中接口之间的继承
- [转]java中byte转换int时为何与0xff进行与运算
- java go
- Java 基础(接口一)
- java文件读写
- 8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理
- java核心技术----接口
- java-基础-接口和抽象类
- 【java 8】函数式接口
- 【 java 集合】Map 接口常用方法总结
- 【 java 集合】Map 接口常用实现类对比
- 【 java 集合】Set 接口及常用实现类总结
- 【 java 集合】List接口常用方法总结
- Java设计原则:面向接口的设计
- JNI的又一替代者—使用JNR访问Java外部函数接口(jnr-ffi)
- java中接口的定义与实现
- 对JAVA Bean使用PropertyDescriptor反射调用JAVA方法
- java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结
- Java Collection接口中的常用方法总结
- 在Java API设计中,面向接口编程的思想,以及接口和工厂的关系
- java 类的继承和接口的继承
- Java 通过Index(索引)数组同时对多个数组进行排序
- 【华为OD机试真题 Java】投篮大赛
- 【华为OD机试真题 Java】求最多可以派出多少支团队
- JAVA抽象类,接口,多态,抽象方法,一次列举
- Java里到底是引用传递还是值传递
- 中南林业科技大学Java实验报告八:包与接口
- java运算符 与(&)、非(~)、或(|)、异或(^)
- JAVA 入坑教程 | 章节一 基础概念
- java之你真正了解抽象类和接口嘛?