2011-06-19 154 views
1

我不太清楚這是什麼意思或它做什麼,有人可以詳細說明嗎?這段代碼是做什麼的?

Player player = (Player) sender; 
+0

爲什麼這不是一個真正的問題? –

回答

6

它接受發件人引用的對象,並嘗試將其轉換爲類型Player。 Java對象是強類型的,這意味着你必須聲明對象的類型。

如果發件人引用的對象不能轉換爲Player對象,則會爲InvalidCast引發異常。

1

這是一個古老的java類型演員。有關完整的詳細信息,請參閱JLS Casting conversion。它假定senderPlayer類型兼容。

0

它將發件人轉換爲播放器對象。否則,播放器的數據類型不匹配發送者的數據類型。通常在發件人最初可以被聲明爲子類時完成。

0

當你讀它「轉換」發件人球員,千萬不要以爲它的字面轉換它們。

有很多時候你傳遞一個變量可能是很多不同的東西,那麼當你弄清楚它是什麼東西的時候,你可以使用轉換操作符來實現這些東西之一。

繼承人不完美的比喻:

想象一下,你從你的本地計算機俱樂部主席打來的電話,他說,該俱樂部的成員會來見你的東西。

現在,你不知道哪個成員即將到來,如果它的女性或男性,他們的年齡甚至是他們的名字,你對未來訪問者的屬性一無所知。

一旦它們出現在你的門口,你就會意識到它的朋友弗蘭克現在在你的腦海中,上面代碼中的'訪客'(發件人)是CAST到'弗蘭克',你知道很多東西,年齡,有多少個孩子,地址等等。

在CAST之前,你對發送者知之甚少,但在演員之後,現在你可以訪問新對象上的各種信息,因爲你現在知道它的TYPE。

希望這會有所幫助。

0

這是一個簡單的Java類型轉換...

這是在bukkit的Minecraft服務器插件?如果是這樣,它所做的是將玩命令發送給Player對象。 Player對象用於在代碼中定位特定的玩家。玩家對象將具有發送該命令的玩家的名字。