我一直想知道是否可以覆盖 Java 的方法以提供与/IPsocket.getInetAddress()
不同的输出。例如,只是IP。
我知道这是一个很小的变化,但自定义格式有时更可取。
这可以轻松完成还是需要字符串操作?例如使用substring(1)
?
我一直想知道是否可以覆盖 Java 的方法以提供与/IPsocket.getInetAddress()
不同的输出。例如,只是IP。
我知道这是一个很小的变化,但自定义格式有时更可取。
这可以轻松完成还是需要字符串操作?例如使用substring(1)
?
套接字未声明final
,Socket.getInetAddress
不是final
,您可以覆盖它,即使这不是一个好主意......
在您的套接字实现中return super.getInetAddress().substring(1);
应该可以工作。
您也必须提供自己的SocketFactory。现实是个坏主意,我相信。
问题是 API 类永远不会返回您的 Socket 版本,因此您不能使用覆盖。我建议一种简单的实用方法,可以根据您的需要更改地址。
如果你想让类的界面更好地满足你的需要,你可以检查Facade Pattern。
您命名的方法不会产生任何输出。您描述的格式来自 InetAddress.toString() 方法。如果您不想要这种格式,请不要调用该方法。有 InetAddress 方法可以只获取主机名或地址。使用它们。不是一个真正的问题。