上一篇分享了kotlin和java中,函数作为方法的参数的情况,这里记录下,函数作为方法返回值的使用的一些场景。
1.在判断条件true时,抛出异常
使用场景:简化项目中用if来判断当某个条件为true时,抛出异常信息;
@FunctionalInterface public interface ThrowExceptionFunction { /** * 抛出异常信息 * * @param message 异常信息 * @return void **/ void throwMessage(String message); }
定义一个函数,默认方法throwMessage:输入一个message,无返回结果,类似一个consumer类型函数;
然后我们定义一个静态方法
public static ThrowExceptionFunction isTure(boolean b){ return (errorMessage) -> { if (b){ throw new RuntimeException(errorMessage); } }; }
这里有点难理解,参数是条件判断的结果,返回的结果是上面定义的函数,函数体里面输入参数对应ThrowExceptionFunction的输入参数,函数体的内容对应throwMessage,也就是说我们调用throwMessage的时候,执行的是throw new RuntimeException(errorMessage);这部分逻辑
使用:
isTure(true).throwMessage("aaaa"); //抛出异常信息“aaaa"
isTure(false).throwMessage("aaaa"); //啥都不干
2.if....else逻辑简化
使用场景:简化if...else的逻辑
@FunctionalInterface public interface BranchHandle { void trueOrFalseHandle(Runnable trueRunnable,Runnable falseRunnable); }
首先还是定义一个函数,参数为两个Runnable的方法体;
定义另外一个静态函数如下:
public static BranchHandle trueOrFalse(boolean b){ return (trueRunnable, falseRunnable) -> { if(b) { trueRunnable.run(); } else { falseRunnable.run(); } }; }
传入一个参数,返回BranchHandle,那么怎么来构造这个BranchHandle那,首先输入参数是两个
Runnable;调用方式如下:
trueOrFalse(true).trueOrFalseHandle(()->{ System.out.println("true执行逻辑"); },()->{ System.out.println("false执行逻辑"); });
这种也可以用来做开关的逻辑,比如开关打开,执行前面的逻辑,开关关闭,执行后面的逻辑;