JAVA 強轉呀強轉

通常我們遇到的強轉,最爲常見的是:

long a = 1L;
int b = (int) a;

這種基本類型的強轉會損失一定精度。

那麼非基本數據類型能否強轉嗎?

當然也可以,比如下面兩個類。

class User{
}
class BigUser extends User{
    boolean big;
}

 

我們測試一番,使用main方法調用test方法:

void main(){
    test(new BigUser());
}

void  test(User user){
    BigUser bu = (BigUser)user;
    ...

}

運行起來是不報錯的,

但是需要注意的是,我們看test方法裏,只有user對象本質上就是BigUser時,纔會強轉成功,否則會報ClassCastException

比如下面的例子,就會報錯:

void main(){
    test(new User());
}

void  test(User user){
    BigUser bu = (BigUser)user;
    ...

}

有時候我在寫一些基礎構件時,會希望能夠這樣強轉,那樣的話就不用copy屬性等數據了..但目前java是不支持的.它會報錯.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章