2017-08-11 42 views
0

我嘗試將Integer :: parseInt作爲參數傳遞給另一個函數。嘗試傳遞重載方法作爲參數時無法解析方法錯誤

但由於Integer :: parseInt可以將(String)或(String,int)作爲輸入,所以該方法無法解析。

public static void main(String[] args) { 
     Hello h = new Hello(); 
     h.withinRange(Integer::parseInt); 
    } 

    public void withinRange(Function<Integer, String> function) { 
    } 
} 

我不確定這是否可行。

+3

你有類型參數錯誤的方式,第二個是返回類型。 –

+0

@JornVernee,謝謝。我有一個後續的問題。遵循你的建議,我嘗試了Function 和Function ,它們都工作正常。但是當我嘗試函數時,它不能再解析,我把'Object'作爲輸入類型使其更一般化,String作爲Object的子類型,而不是它爲什麼在那裏抱怨.. – user2628641

+0

你不能用'Object'調用'Integer.parseInt',你需要一個'String'。這說得通。 –

回答

1

您需要聲明它爲public void withinRange(Function< String,Integer> function)public void withinRange(ToIntFunction< String> function)(似乎更合適)。