我想以字符串形式获取套接字连接的IP。如何将Java类转换为它的一个子类(SocketAddress和InetSocketAddress)
我正在使用一个框架,它返回接收消息的SocketAddress
。我如何将它转换为InetSocketAddress
或InetAddress
?
我想以字符串形式获取套接字连接的IP。如何将Java类转换为它的一个子类(SocketAddress和InetSocketAddress)
我正在使用一个框架,它返回接收消息的SocketAddress
。我如何将它转换为InetSocketAddress
或InetAddress
?
如果你的某个对象是一个InetSocketAddress
然后简单地将它转换:
SocketAddress sockAddr = ...
InetSocketAddress inetAddr = (InetSocketAddress)sockAddr;
然后,您可以致电inetAddr
的getAddress()
方法来获取与之相关的InetAddress
对象。
谢谢,我更多的是一个PHP开发人员和Java新手,所以整个铸造过程对我来说都是新的。非常感谢 – vasion 2010-03-20 17:41:51
其实SocketAddress
是一个抽象类,所以你会收到它的一些子类。您是否尝试将退回的SocketAddress
投射到InetSocketAddress
?
您可以尝试转换为它。在这种情况下,这是downcasting。
InetSocketAddress isa = (InetSocketAddress) socketAddress;
但是,如果该类不是您所期望的,那么这可能会导致ClassCastException
。
支票可以在此通过instanceof
操作进行:
if (socketAddress instanceof InetSocketAddress) {
InetSocketAddress isa = (InetSocketAddress) socketAddress;
// invoke methods on "isa". This is now safe - no risk of exceptions
}
相同的检查可以为SocketAddress
其他子类来完成。
欢迎来到SO。最有用并且最终解决您的问题的答案应该被标记为已接受。这是通过使用投票计数器下方的滴答完成的。 – Bozho 2010-03-20 17:43:34