Java中方法作為參數(shù)傳遞的方式
java中將方法當(dāng)作參數(shù)傳遞的方式
1. 使用consumer接口
在Java8中引入了一個(gè)函數(shù)式接口Consumer的對(duì)象,該對(duì)象可以把方法作為參數(shù)進(jìn)行傳遞。
接口定義:
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}該接口接收一個(gè)泛型參數(shù)T,然后可以自定義實(shí)現(xiàn)Consumer接口中的accept方法來對(duì)T進(jìn)行一系列的操作,該方法沒有返回值。
示例:
void testConsumer(Integer id, Consumer consumer, String msg){
consumer.accept(msg);
}
public static void main(String[] args){
testConsumer(System.out::println, "consumer接口測(cè)試...");
testConsumer(x -> {
x = StringUtils.join(x,String.valueof(x).length());
System.out.println(x);
}, "consumer接口測(cè)試...")
}
# 輸出結(jié)果
接口測(cè)試...
接口測(cè)試...15其實(shí),主要是理解Consumer消費(fèi)者,就可以了~主要是對(duì)入?yún)⒆鲆恍┝械牟僮?,?code>stream里,主要是用于forEach;內(nèi)部迭代的時(shí)候,對(duì)傳入的參數(shù),做一系列的業(yè)務(wù)操作,沒有返回值;
這個(gè)接口,只有一個(gè)默認(rèn)方法,看下注釋內(nèi)容,就清楚用法了,就不在寫案例解釋了
/**傳入一個(gè)Consumer類型的參數(shù),
*他的泛型類型,
*跟本接口是一致的T,先做本接口的accept操作,
*然后在做傳入的Consumer類型的參數(shù)的accept操作
*/
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}2. 基于lambda表達(dá)式
示例:
public class TestClass {
interface TestFunction<T>{
boolean getBooleanValue(T t);
}
static class Student{
String name;
Double score;
Student(String name, Double score) {
this.name = name;
this.score = score;
}
Double getScore() {
return score;
}
}
static <T> void printMsg(T obj, TestFunction<T> function){
if(function.getBooleanValue(obj)){
System.out.println("result is true");
}else{
System.out.println("result is false");
}
}
public static void main(String[] args) {
printMsg(new Student("張三",92.5),x->{
return x.getScore().compareTo(90d) > 0;
});
printMsg(new Student("張三",80.5),x->{
return x.getScore().compareTo(90d) > 0;
});
}
}
# 輸出結(jié)果
result is true
result is false3. 參考資料
https://blog.csdn.net/qq_28410283/article/details/80618456
https://blog.csdn.net/qq_44964202/article/details/114992507
Java如何讓方法作為參數(shù)傳遞
代碼如下所示:
/**
* @Author HE LONG CAN
* @Description TODO
* @Date 2022-06-26 12:21:06
*/
@FunctionalInterface
public interface Functional {
void run();
}
/**
* @Author HE LONG CAN
* @Description TODO
* @Date 2022-06-26 12:21:22
*/
public class Work {
public static void doSome(Functional functional) {
System.out.println("我要開始干活了");
System.out.println("我板了一塊磚");
System.out.println("接下來是老板安排的任務(wù)...");
functional.run();
System.out.println("活干完了");
}
}
/**
* @Author HE LONG CAN
* @Description TODO
* @Date 2022-06-26 12:22:28
*/
public class Main {
public static void main(String[] args) {
Work.doSome(() -> {
System.out.println("老板讓我寫報(bào)告");
System.out.println("寫報(bào)告中....");
});
}
}到此這篇關(guān)于Java中方法作為參數(shù)傳遞的方式的文章就介紹到這了,更多相關(guān)java方法作為參數(shù)傳遞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)文件上傳下載至ftp服務(wù)器
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件上傳下載至ftp服務(wù)器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
微服務(wù)之間如何通過feign調(diào)用接口上傳文件
這篇文章主要介紹了微服務(wù)之間如何通過feign調(diào)用接口上傳文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
基于XML的MyBatis的環(huán)境搭建過程詳解(IDEA)
這篇文章主要介紹了基于XML的MyBatis的環(huán)境搭建過程詳解(IDEA),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Java中Spring技巧之?dāng)U展點(diǎn)的應(yīng)用
這篇文章主要介紹了Java中Spring技巧之?dāng)U展點(diǎn)的應(yīng)用,下文Spring容器的啟動(dòng)流程圖展開其內(nèi)容的相關(guān)資料,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-04-04
SpringBoot2 整合Ehcache組件,輕量級(jí)緩存管理的原理解析
這篇文章主要介紹了SpringBoot2 整合Ehcache組件,輕量級(jí)緩存管理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
java字節(jié)碼框架ASM的深入學(xué)習(xí)
這篇文章主要給大家介紹了java中字節(jié)碼框架ASM的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-01-01

