簡體   English   中英

Java傳遞函數作為參數

[英]Java passing function as parameter

這是我對 lambda 表達式、函數作為參數或一般函數式編程的第一種方法......

我如何在這段代碼中調用 B 函數?

public class Fp_example<T>
{
    public static void main(String[] args)
    {
         ArrayList<String> names = new ArrayList<>(asList("A"));
         new Fp_example.b_function(names, /* (1) */);
    }

    public void b_function(ArrayList<T> l, Function<T,T> func)
    {
         l.forEach( (t) -> {func.apply(t);});
    }
}

我需要在 (1) 中編寫我的函數,還是可以編寫另一個函數並在 (1) 中調用它?

首先,您應該實例化Fp_example<String> ,因為您將ArrayList<String>傳遞給b_function

現在,由您決定將哪個函數傳遞給該方法,具體取決於您希望如何轉換輸入String 任何接受String參數並返回String lambda 表達式都可以。

例如,您可以傳遞一個反轉輸入String s 的 lambda 表達式:

new Fp_example<String> ().b_function(names, s -> new StringBuilder(s).reverse().toString());

或者

Function<String,String> a_function = s -> new StringBuilder(s).reverse().toString();
new Fp_example<String> ().b_function(names, a_function);

不過,您可能希望顯示在輸入元素上應用該函數的輸出:

public void b_function(ArrayList<T> l, Function<T,T> func)
{
     l.forEach( (t) -> {System.out.println(func.apply(t));});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM