我知道有人就此提出了多个问题,但没有一个符合我的需求。对此深感抱歉。
无论如何,我的类 AdvancedSocket 扩展了 java.net.Socket
。在我的类 AdvancedServerServer 中扩展了 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
,您可以获取调用 super.accept()
返回的 Socket
实例并进行一个 AdvancedSocket
。
希望对您有所帮助。
关于java - 将父类(super class)类型转换为子类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30720255/