1

我一直想知道是否可以覆盖 Java 的方法以提供与/IPsocket.getInetAddress()不同的输出。例如,只是IP

我知道这是一个很小的变化,但自定义格式有时更可取。

这可以轻松完成还是需要字符串操作?例如使用substring(1)

4

4 回答 4

1

套接字未声明finalSocket.getInetAddress不是final,您可以覆盖它,即使这不是一个好主意......

在您的套接字实现中return super.getInetAddress().substring(1);应该可以工作。

您也必须提供自己的SocketFactory。现实是个坏主意,我相信。

于 2013-04-07T19:13:53.690 回答
1

问题是 API 类永远不会返回您的 Socket 版本,因此您不能使用覆盖。我建议一种简单的实用方法,可以根据您的需要更改地址。

于 2013-04-07T19:14:37.277 回答
1

如果你想让类的界面更好地满足你的需要,你可以检查Facade Pattern

于 2013-04-07T19:14:55.447 回答
0

您命名的方法不会产生任何输出。您描述的格式来自 InetAddress.toString() 方法。如果您不想要这种格式,请不要调用该方法。有 InetAddress 方法可以只获取主机名或地址。使用它们。不是一个真正的问题。

于 2013-04-08T00:50:56.557 回答