我知道已经问过多个问题,但是没有一个适合我的需求。很抱歉。
无论如何,我的class AdvancedSocket extends java.net.Socket
。在我的class AdvancedServerServer extends java.net.ServerSocket
中。因此,在AdvancedServerSocket中,我重写了accept()
方法以返回AdvancedSocket
。这是该方法:
@Override
public AdvancedSocket accept() throws IOException {
return (AdvancedSocket) super.accept();
}
但这会引发
java.lang.ClassCastException
。 最佳答案
调用super.accept()
时,将执行SocketServer
的accept()
方法中的代码。该类对您定义的AdvancedSocket
类一无所知,因此无论返回什么,它都不是AdvancedSocket
的实例。
如果要返回AdvancedSocket
,则可以采用对Socket
的调用返回的super.accept()
实例,并在其中创建一个AdvancedSocket
。
希望对您有所帮助。