Cześć, mam problem z interfejsami funkcyjnymi, otóż siedzę kolejną godzinę i nie mogę ruszyć.
Mam kod:
public static void main(String[] args) {
Function<String, String> lambda = path -> {
String result = null;
try {
BufferedReader br = new BufferedReader(new FileReader(path));
String line;
while ((line = br.readLine()) != null) {
result = result + line;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
};
}
a chcę z niego zrobić:
public static void main(String[] args) throws IOException {
Function<String, String> lambda = path -> {
String result = null;
BufferedReader br = new BufferedReader(new FileReader(path));
String line;
while ((line = br.readLine()) != null) {
result = result + line;
}
return result;
};
}
Czyli, potrzebuję zrobić tak aby odejść od "try, catch" w mojej metodzie "lambda" na rzecz wyjątku wyrzucanego w nagłówku metody.
Zastrzeżenie jest takie, że nie mogę tworzyć własnych interface'ów. "Lambda" może być interfacem z java.util.function lub rozszerzeniem jednego z nich. Czytałem o tworzeniu własnego interfejsu z adnotacją @FunctionalInterface ale nie mogę stworzyć własnego od podstaw. Próbowałem coś takiego:
@FunctionalInterface
public interface MyFunction<U, V> extends Function<U, V>
{
V apply(U u) throws Exception;
}
ale w tym przypadku program mówi, że "overridden method does not throw Exception".
Z kolei takie rozwiązanie wykluczyłoby Exception z nagłówka metody...
Czy miałby ktoś jakiś pomysł? Cokolwiek? Siedzę kolejną godzinę a nie mogę sobie z tym poradzić kompletnie...