I am getting error while passing lambda method refrence, with type incompatibilty. while calling the FUnctional Interface method, code compile perfectly fine and substituting the Concrete objects. While Passing method reference it throwing type incompatibility. Please clear my misunderstanding
public interface ParsingFileFunction {
public <K,T> K getMessage(T inputMessage);
}
public class FileUtility {
public static Messages readMessage(File kingMesaages){
//some process here
return messages; //of Messages type
}
}
public class SomeController{
@Autowired
SomeService someService;
public void parse(File kingMessage) {
//compiler error -- The type FileUtility does not define readMessage(T) that is applicable here
Messages kingdomMessages = someService.getMessage(FileUtility::readMessage,kingMessage);
}
}
@Service
public class SomeService{
public Messages getMessage(ParsingFileFunction parse,File file) {
//this compiles perfectly fine as expected
return parse.getMessage(file);
}
}