在我的Java代码中,我有一个类'Feature',它由'ContinuousFeature'和'DiscreteFeature'扩展。我有方法:
Calculate(ContinuousFeature c)
和
Calculate(DiscreteFeature d)
我有一个包含通用“特征”对象(包括离散和连续)的ArrayList,我正在尝试做类似的事情:
for(Feature f : features) {
Calculate(f);
}
希望他们会自动定向到适当的方法。但是,IntelliJ告诉我它无法找到类型'功能'的计算方法。有什么建议? :)
答案 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);
就足够了。我认为它会更清洁。但那只是我的个人意见。希望这可以帮助。