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