我知道已经问过多个问题,但是没有一个适合我的需求。很抱歉。

无论如何,我的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()时,将执行SocketServeraccept()方法中的代码。该类对您定义的AdvancedSocket类一无所知,因此无论返回什么,它都不是AdvancedSocket的实例。

如果要返回AdvancedSocket,则可以采用对Socket的调用返回的super.accept()实例,并在其中创建一个AdvancedSocket

希望对您有所帮助。

10-08 03:09