Пример
В этом (упрощенном) примере я могу создать свой MyInterface
-объект, используя ссылку метода на apply
, но литье напрямую не работает.
@Test
public void testInterfaceCast(){
Function<String, Integer> func = Integer::parseInt;
MyInterface legal = func::apply; // works
MyInterface illegal = func; // error
}
public interface MyInterface extends Function<String, Integer>{}
Второе присваивание дает ошибку компилятора:
incompatible types: Function<String,Integer> cannot be converted to MyInterface
Вопрос
Могу ли я сделать некоторую магию Generics, чтобы сделать Function<T, R>
для интерфейса?