2017-08-11 41 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)(似乎更合适)。