Java はその柔軟さゆえに、どうにでもなるさ。

abstract class Proc<P extends Closeable> {
private final P port;
public Proc(P port) { this.port = port; }
public void run() {
try {
process();
} finally {
port.close();
}
abstract void process();
}