首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

妙用Java8中的“Function”消灭if...else!

函数式接口 Supplier供给型函数 Consumer消费型函数 Runnable无参无返回型函数 Function函数的表现形式为接收一个参数,并返回一个值。...这些if...else...充斥在代码中严重影响了代码代码的美观,这时我们可以利用Java 8的Function接口来消灭if...else...。...函数式接口主要分为Supplier供给型函数、Consumer消费型函数、Runnable无参无返回型函数和Function有参有返回型函数。...Function可以看作转换型函数 Supplier供给型函数 Supplier的表现形式为不接受参数、只返回数据 Consumer消费型函数 Consumer消费型函数和Supplier刚好相反。...Consumer接收一个参数,没有返回值 Runnable无参无返回型函数 Runnable的表现形式为即没有参数也没有返回值 Function函数的表现形式为接收一个参数,并返回一个值。

51320
您找到你想要的搜索结果了吗?
是的
没有找到

Java8中的函数式接口详解(Supplier、Consumer、Predicate、Function

代码案例Function 代码案例Function_andThen @FunctionalInterface 函数式接口:有且只有一个抽象方法的接口,称之为函数式接口 @FunctionalInterface...java.util.function.Function接口用来根据一个类型的数据得到另一个类型的数据, 前者称为前置条件,后者称为后置条件。...Function接口中最主要的抽象方法为:R apply(T t),根据类型T的参数获取类型R的结果。 使用的场景例如:将String类型转换为Integer类型。...代码案例Function public class Demo01Function { /** 定义一个方法 方法的参数传递一个字符串类型的整数 方法的参数传递一个...参数串一个字符串类型的整数 参数再传递两个Function接口 一个泛型使用Function 一个泛型使用

26420

Java8——行为参数化传递代码

我们可以把行为进行参数化,来达到更高层次的抽象,首先定义一个统一的标准接口,再通过不同子类对其进行实现,这有点类似于策略设计模式的赶脚。...但是问题又来了,匿名类还是不够好,第一,它往往很笨重,占用了很多的空间,第二,使用起来让人费解,导致代码可读性不高,即使匿名类处理在某种程度上改善了为一个接口声明好几个实体类的啰嗦问题,但是还是不能令人满意,自java8...9、小结 行为参数化,就是一个方法接收不同的行为作为参数,并在内部使用他们,完成不同行为的能力。 行为参数化可以让代码更好的适应不断变化的要求,减轻未来的工作量。...传递代码,就是将新行为作为参数传递给方法,但是在java8之前实现起来很啰嗦。为接口声明许多只用一次的实体类而造成的啰嗦代码,在java8之前可以用匿名类来减少。...java API 包含很多可以用不同行为进行参数化的方法,包括排序、线程等。

47930

cmake:macro,function中ARGV,ARGN参数的区别

https://blog.csdn.net/10km/article/details/83027824 cmake中的宏(macro)和函数(function)都支持动态参数 变量ARGC...记录传入的参数个数 变量ARGV0,ARGV1,...顺序代表传入的参数 变量ARGV则是一个包含所有传入参数的list 变量ARGN也是一个包含传入参数的list,但不是所有参数,而是指macro.../function声明的参数之后的所有传入参数 写一个小程序就可以验证: # 定义一个宏,显式声明了两个参数hello,world macro(argn_test hello world) MESSAGE...ARGV1=${ARGV1}) MESSAGE(STATUS ARGV2=${ARGV2}) MESSAGE(STATUS ARGV3=${ARGV3}) endmacro() # 调用宏时传入4个参数...argn_test(TOM JERRY SUSAN BERN) cmake脚本执行输出结果,ARGN为声明参数之后的所有参数 -- ARGV=TOMJERRYSUSANBERN -- ARGN=SUSANBERN

1.7K10

MySQL复制问题的三个参数介绍

01 MySQL复制问题的三个参数介绍 今天星期二,早上居然起晚了,上班迟到了,简直是。。。...废话不多说,在昨天的文章中,我们提到了三个参数,分别是: slave_exec_mode参数; sql_slave_skip_counter=N参数; slave-skip-errors=N参数。...这三个参数都可以解决并行复制中的一些指定的错误,例如duplicate key 1062错误等,今天我们简单试验一下,这三个参数的区别: 01 sql_slave_skip_counter参数 这个参数的设置主要是为了跳过某些错误的...1062,需要注意的是,这个参数的改动需要重启mysql服务,因为这个参数是一个只读的参数。...这三个参数都能解决复制过程中的不一致情况,区别如下: slave_exec_mode参数可以保证主从数据一致,其他两个不可以。

1.1K20

「python」 三个方面讲解函数的缺省参数

所谓缺省参数,在定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数。调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定的参数默认值。...一、列表的排序方法明确缺省参数的概念和作用缺省参数的作用:函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用。...num_list.sort(reverse=True)print(num_list)执行结果:二、指定函数的缺省参数参数后使用赋值语句,可以指定参数的缺省值。...三、缺省参数的注意事项1) 缺省参数的定义位置必须保证带有默认值的缺省参数参数列表末尾。...2)调用带有多个缺省参数的函数在调用函数时,如果有多个缺省参数,需要指定参数名,这样解释器才能能够知道参数的对应关系。

1K20

Java8实战——通过行为参数化传递代码 顶

我们可以把行为进行参数化,来达到更高层次的抽象,首先定义一个统一的标准接口,再通过不同子类对其进行实现,这有点类似于策略设计模式的赶脚。...但是问题又来了,匿名类还是不够好,第一,它往往很笨重,占用了很多的空间,第二,使用起来让人费解,导致代码可读性不高,即使匿名类处理在某种程度上改善了为一个接口声明好几个实体类的啰嗦问题,但是还是不能令人满意,自java8...9、小结 行为参数化,就是一个方法接收不同的行为作为参数,并在内部使用他们,完成不同行为的能力。 行为参数化可以让代码更好的适应不断变化的要求,减轻未来的工作量。...传递代码,就是将新行为作为参数传递给方法,但是在java8之前实现起来很啰嗦。为接口声明许多只用一次的实体类而造成的啰嗦代码,在java8之前可以用匿名类来减少。...java API 包含很多可以用不同行为进行参数化的方法,包括排序、线程等。

55130

Dating Java8系列之通过行为参数化传递代码

行为参数化 下面就让我们一起探究一下行为参数化吧 初始化手机列表 public static List initPhoneList() { List phones =...phone)) { filteredPhones.add(phone); } }return filteredPhones;} 上面的这个方法,就完成了行为参数化要做的事情...,把过滤这个动作看做一个行为,把这个行为用接口的形式进行参数化传递。...initPhoneList(), (Phone phone) -> "暗夜绿色".equals(phone.getColor()) ));} 用行为参数化的方式传递代码可以让我们的代码更加的清晰专业...总结 行为参数化,就是一个方法接受多个不同的行为作为参数,并在内部使用它们,完成不同行为的能力。 行为参数化可让代码更好地适应不断变化的要求,减轻开发的工作量。

6210

Java8新特性】04 详解Lambda表达式中Predicate Function Consumer Supplier函数式接口

除此之外,Java8设计者还新增了一些比较抽象的函数式接口,比如:Predicate, Consumer, Supplier, Function, UnaryOperator, BinaryOperator...) && str.length() > 5)) { // 校验输入 System.out.println("valid input"); } } // 第二个参数接收一个...下面以判断输入是否以指定字符串开头的实例讲解Function的用法: @Test public void testFunction() { String input = "hello java8...UnaryOperator (1)定义 UnaryOperator是一元操作符的意思,接收一个泛型T对象参数,返回相同T类型对象。...BinaryOperator (1)定义 BinaryOperator是二元操作符的意思,接收两个相同泛型参数类型T,返回R类型对象。

1.3K10
领券