簡體   English   中英

當一個對象作為類型超類傳入時,有沒有辦法檢索子類的類型?

[英]Is there a way of retrieving the type of a subclass, when an object is passed in as type super class?

如果我有方法簽名

public void myMethod(SuperClass s){
}

SuperClass有三個子類, myMethod是否有任何方法可以獲取傳入的子類的類名?

不確定它是否重要,但SuperClass是抽象的。

myMethod中是否有任何方法可以獲取傳入的子類的類名?

是的,通過使用getClass方法

public void myMethod(SuperClass s){
    System.out.println(s.getClass());
}

備注1:

然而,這聽起來像是Bad Design™。

無論你想在做myMethod考慮有在它的方法SuperClass (提供一個有意義的默認實現,或使其抽象迫使子類實現的方法),並調用此方法s在你的方法:

public void myMethod(SuperClass s){
    s.abstractMethod();
}

備注2:

如果myMethod的邏輯看起來與SuperClass的目的無關,並且您不想將myMethod代碼放在此類中,請考慮實現訪問者模式

暫無
暫無

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

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