Я столкнулся с этой проблемой с SocketChannel
с, и, насколько я могу судить (и насколько может сказать переполнение стека), не существует поддерживаемого способа сделать это с JDK. Однако я не позволил этому остановить меня. При правильной инкапсуляции вы можете сделать что-то вроде этого:
public class SocketWrapper implements Closeable {
private final Socket socket;
public SocketWrapper(Socket socket) {
this.socket = socket;
}
/**
* Provide all the methods you need in your application
* for accessing the internal socket
*/
public void close() throws IOException {
socket.close();
fireClosedEvent();
}
/**
* Event firing methods, etc.
*/
}
Это не так гибко, как хотелось бы, и поэтому я все еще оставляю свой вопрос без ответа, но это может быть хорошим решением для вас. Конечно, было бы неплохо придумать лучшее имя, чем SocketWrapper
.