[英]Java directing object of type superclass to appropriate method
在我的 Java 代碼中,我有一個類“Feature”,它由“ContinuousFeature”和“DiscreteFeature”擴展。 我有方法:
Calculate(ContinuousFeature c)
和
Calculate(DiscreteFeature d)
我有一個包含通用“功能”對象(離散和連續)的 ArrayList,我正在嘗試執行以下操作:
for(Feature f : features) {
Calculate(f);
}
希望他們會自動被引導到適當的方法。 但是,IntelliJ 通知我它找不到“功能”類型的計算方法。 有什么建議嗎? :)
您可以像這樣更改代碼。
for(Feature f : features) {
if(f instanceof ContinuousFeature)
Calculate((ContinuousFeature)f);
else {
Calculate((DiscreteFeature)f);
}
}
如果你不喜歡使用instanceof
,我建議在它們各自的類中添加像isContinuousFeature()
這樣的方法,返回一個布爾類型並每次檢查,它可能不是最干凈的,但它會得到你想要的。
你可以在你的 Feature.java 中創建類似的東西
public void Calculate(Feature feature){}
我認為這條線可以解決你的問題。 或者可能使類抽象,例如:
public abstract void Calculate(Feature feature);
就足夠了。 而且我認為它會更干凈。 但那只是我的個人意見。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.