我有一個基類這樣的:如何在強制強制轉換受保護對象的超類時拋出警告?
class Base {
protected Object a;
Base(Object a) {
this.a = a;
}
}
,然後,一個daugher類:
class Daugher extends Base {
/*
... some attributes ....
*/
Daughter(Pair<L, R> a) {
super(a);
/*
.... some methods ....
*/
public void mathodX() {
....
((Pair <L, R>) a).getLeft().SomeSpecificMethodOfObjectTypeL()
....
}
}
注:對具體爲org.apache.commons.lang3.tuple.Pair對象,但我想同樣適用於其他結構,如地圖,列表等...
因此,如果我想使用強制對象類型的特定方法,我不得不做上述的醜陋鑄造。 但是,這個轉換會在Eclipse中引發「未經檢查的轉換」警告,所以它不太好。 如果我嘗試插入一個支票(例如「if(一個對的實例)」等)...我被告知我不能使用instanceof檢查與特定的任務,但我應該檢查與Pair。但是這不會毫無意義,因爲那麼我想要達到L(或R)特有的方法嗎?
從更廣泛的意義上講,在超類中操縱受保護的通用對象的最正確方法是什麼?
我很抱歉如果沒有以最好的方式說明問題,我不是Java專業人員。
感謝您的幫助!
實際上,你可以不知道肯定'了'是'對'。既然它不是最終的,它可能已經被改變了,你知道,編譯器是正確的,可以警告你。 –
resueman
2014-09-26 14:03:08
是的,我理解你的觀點,我明白爲什麼編譯器會提出警告 - 我只是想知道檢查對象a是否是Pair的一個實例是最正確的方法。 –
CaptainPhlegm
2014-09-26 14:51:25