[英]java.net.InetSocketAddress and java.net.SocketAddress Support IPv6?
[英]How to turn Java class into one of its subclasses (SocketAddress and InetSocketAddress)
我試圖以字符串形式獲取套接字連接的IP。
我正在使用一個框架,它返回收到的消息的SocketAddress
。 我怎樣才能將其轉換為InetSocketAddress
或InetAddress
?
如果您確定該對象是InetSocketAddress
那么只需將其InetSocketAddress
:
SocketAddress sockAddr = ...
InetSocketAddress inetAddr = (InetSocketAddress)sockAddr;
然后,您可以調用inetAddr
上的getAddress()
方法來獲取與之關聯的InetAddress
對象。
你可以嘗試投射它。 在這種情況下,這是向下轉型 。
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
其他子類進行相同的檢查。
實際上SocketAddress
是一個抽象類,所以你會收到它的一些子類。 您是否嘗試將返回的SocketAddress
InetSocketAddress
為InetSocketAddress
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.