2017-08-11 17 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

タイプパラメータが間違っています。もう1つは戻り値の型です。 –

+0

@JornVernee、ありがとう。私はフォローアップの質問を持っています。あなたのアドバイスに従って、私はFunction とFunction を試してみました。しかし、私がFunction を再試行できないときは、入力タイプにObjectを入力してより一般的にし、Stringはオブジェクトのサブタイプです。なぜそれが文句を言うのでしょうか。 – user2628641

+0

'Integer.parseInt'を' Object'で呼び出すと、 'String'が必要になります。それは理にかなっている。 –

答えて

1

public void withinRange(Function< String,Integer> function)またはpublic void withinRange(ToIntFunction< String> function)のいずれかとして宣言する必要があります。

関連する問題