Вы могли бы где-то определить что-то вроде этого:
private static interface InputStreamCallback {
public void doIt(InputStream is) throws IOException;
}
private void with(InputStreamCallback cb) {
InputStream is = null;
// Creational code. Possibly adding an argument
try {
cb.doIt(is);
} catch (IOException e) {
// handle error or rethrow.
// If rethrow add throws to method spec.
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
// handle error or rethrow.
}
}
}
}
И вызвать ваш код следующим образом:
with(new InputStreamCallback() {
@Override
public void doIt(InputStream is) throws IOException {
is = url.openConnection().getInputStream();
// .....
}
});
Если вы объявите с помощью метода static
во вспомогательном классе, тогдаВы могли бы даже сделать import static
из этого.
Есть недостаток.Вам нужно объявить url
final.
EDIT: код создания не имеет значения.Вы можете организовать это несколькими способами.Обратный вызов это точка.Вы можете выделить то, что вам нужно сделать там.