Java将类型超类的对象引导到适当的方法

时间:2015-10-26 19:29:35

标签: java

在我的Java代码中,我有一个类'Feature',它由'ContinuousFeature'和'DiscreteFeature'扩展。我有方法:

Calculate(ContinuousFeature c)

Calculate(DiscreteFeature d)

我有一个包含通用“特征”对象(包括离散和连续)的ArrayList,我正在尝试做类似的事情:

for(Feature f : features) {

    Calculate(f);

}

希望他们会自动定向到适当的方法。但是,IntelliJ告诉我它无法找到类型'功能'的计算方法。有什么建议? :)

3 个答案:

答案 0 :(得分:2)

您可以更改此类代码。

for(Feature f : features) {
if(f instanceof ContinuousFeature)
    Calculate((ContinuousFeature)f);
else {
 Calculate((DiscreteFeature)f);
}

}

答案 1 :(得分:0)

如果您不喜欢使用instanceof,我建议在各自的类中添加类似isContinuousFeature()的方法,返回布尔类型并每次检查,它可能不是最干净但它会得到你的想。

答案 2 :(得分:0)

您可以在Feature.java中创建类似

的内容
public void Calculate(Feature feature){}

我认为这条线可以解决你的问题。 或者可以使课程抽象,例如:

public abstract void Calculate(Feature feature);

就足够了。我认为它会更清洁。但那只是我的个人意见。希望这可以帮助。