У меня есть ThrowingFunction<T, R, E extends Exception>
функциональный интерфейс с единственным абстрактным методом, имеющим эту подпись: R apply(T t) throws E
.
У меня есть статический служебный метод внутри функционального интерфейса, который позволяет пользователям преобразовывать ThrowingFunction<T, R, E extends Exception>
экземпляры в Function<T, R>
экземпляров:
static <T, R> Function<T, R> unchecked (final ThrowingFunction<T, R, ?> tf)
{
// code here
}
Проблема в том, что параметры типа T
и R
не выводятся компилятором, если я передаю ссылку на метод URL::new
в unchecked
метод статической утилиты?
final URL url = unchecked(URL::new).apply("http://www.examples.com");
Я имею в виду, не является ли URL::new
действительным условным обозначением для ThrowingFunction<String, URL, MalformedURLException>
, и поэтому T
и R
должны выводиться как String
и URL
соответственно