簡體   English   中英

如何將Java類轉換為其子類之一(SocketAddress和InetSocketAddress)

[英]How to turn Java class into one of its subclasses (SocketAddress and InetSocketAddress)

我試圖以字符串形式獲取套接字連接的IP。

我正在使用一個框架,它返回收到的消息的SocketAddress 我怎樣才能將其轉換為InetSocketAddressInetAddress

如果您確定該對象是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 InetSocketAddressInetSocketAddress

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM