我想以字符串形式獲取套接字連接的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