![](/img/trans.png)
[英]Possible to declare a method in super class that returns an object of type subclass?
[英]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.