如何避免在父類轉換到子類時發生java.lang.ClassCastException


在父類轉換到子類時會發生ClassCastException異常,當你面對一個工程時成千上百的類時,

是不太容易發現類之間的關系的,所以即使知道該原則,有時候還是避免不了,那應該如何處理呢:

SuperClass

public class SuperClass {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

SubClass

public class SubClass extends SuperClass {
    private String performance;
    public String getPerformance() {
        return performance;
    }
 
    public void setPerformance(String performance) {
        this.performance = performance;
    }
}

測試

public static void main(String[] args) {
        SuperClass superClass = new SuperClass();
        SubClass subClass = (SubClass) superClass;
        subClass.setName("abc");
        System.out.println(subClass.getName());
    }

上述代碼如約拋出了ClassCastException,怎么避免?

在每次進行強制轉換時使用instanceof判斷一下是否存在關系,然后再進行轉換。

if(superClass instanceof SubClass){
        subClass = (SubClass) superClass;
        subClass.setName("abc");
        System.out.println(subClass.getName());
    }

即當每次想把一個對象轉換為另一個類的實例的時候,先判斷該對象是否是目標類的一個實例,

這樣就能避免這樣的錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM