搭建一个网站教程,python自动写wordpress,石家庄p2p网站开发,北京太阳宫网站建设在工作中我需要#xff0c;我需要递归处理复杂嵌套的JSON字符串#xff0c;然后处理方法有多种#xff0c;为了代码通用性#xff0c;我想要把处理方法当作参数#xff0c;传入到函数中#xff0c;然后根据不同的处理方法处理字符串。通过查资料得知#xff0c;可以使用…在工作中我需要我需要递归处理复杂嵌套的JSON字符串然后处理方法有多种为了代码通用性我想要把处理方法当作参数传入到函数中然后根据不同的处理方法处理字符串。通过查资料得知可以使用函数式接口来实现此功能。 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法的接口。 定义
Java8新增加的函数接口放在java.util.function包中一般Java8提供的接口够用了。当然也可以自定义比如可按照以下方式
FunctionalInterface
public interface UpperCaseStringT,U {public String upperString(String t,String u);
} Java8函数接口介绍
从接口命名来看其实函数接口类型分为以下几类
Function接口
Fcuntion接口接受一个参数,返回一个的结果。
Test
public void testLongFunction() {//LongFunction接口一个long类型的数据返回一个Object类型的数据LongFunctionString function t - String.valueOf(t);String result function.apply(12l);System.out.println(result);
}其他还有
DoubleToIntFunction 接受一个double类型输入返回一个int类型结果。ToDoubleBiFunctionT,U 接受两个输入参数返回一个double类型结果。
Supplier接口
Supplier接口不接受参数但是提供一个返回值。
Test
public void testSupplier() {//不接受参数返回一个long数据LongSupplier supplier () - 2l;System.out.println(supplier.getAsLong());
}其他还有
IntSupplier 不接受参数返回一个int数据。DoubleSupplier 不接受参数返回一个double数据。
Predicate接口
Predicate接口接收一个参数返回一个Boolean类型值。
Test
public void testPredicate() {//接受两个String参数取小写之后返回是否相等BiPredicateString, String predicate (t,u) - t.toLowerCase().equals(u.toLowerCase());System.out.println(predicate.test(AAb, aaB));
}其他还有
DoublePredicate 接受一个Double类型的数据返回Boolean类型
Consumer接口
Consumer接口就是接受一个参数不返回结果即消费数据
Test
public void testConsumer() {//接受一个int类型先加1然后再打印IntConsumer consumer t - System.out.println(t1);consumer.accept(2);
}其他还有
BiConsumer 接受两个参数不返回结果
Operator接口
Operator接口是继承与Function接口所以使用类似。UnaryOperatorT一元操作符接口,BinaryOperatorT二元操作符接口一般多用于操作计算。
Test
public void testOperator() {BinaryOperatorInteger binaryOperator (t,u) - tu;System.out.println(binaryOperator.apply(2, 3));System.out.println(BinaryOperator.maxBy(Double::compareTo).apply(2.5, 4.5));BinaryOperatorString stringOperator BinaryOperator.minBy(Comparator.naturalOrder());System.out.println(stringOperator.apply(A,B));BinaryOperatorString stringOperator2 BinaryOperator.minBy(String::compareTo);System.out.println(stringOperator2.apply(2020-01-14,2020-01-13));
}其他还有
IntUnaryOperator 接受一个参数同为类型int,返回值类型也为int。LongBinaryOperator 接受两个参数同为类型long,返回值类型也为long。
总结
上述是介绍了几种函数式接口其他也还有很多但是其他就是另外的变式原理都是共通的。函数式接口可以隐式转换为 lambda 表达式。这样我们平时编程时候比较代码简洁用起来也是非常方便值得使用。