簡體   English   中英

Java將超類類型的對象指向適當的方法

[英]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.

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