Причина в том, что Long.valueOf()
принимает только String
или long
. Из параметра типа T
компилятор делает вывод, что Function
принимает Object
, он не допустит его, так как нет метода как Long.valueOf( Object )
.
Возможно, вам придется изменить myMethod()
к этой подписи:
public static <T, U> Long myMethod( Function<String, Long> methodParam ) { //Both type parameters are explicit
return methodParam.apply("Today is happy day!");
}
Или это, которое может бросить NumberFormatException
:
public static <T, U> Long myMethod( Function<String, U> methodParam ){ //Input type parameter is explicit
return (Long) methodParam.apply( "Today is happy day!" );
}