[英]Java/Android Studio - Covariant Return Type - Method in “subclass” clashes with method in “baseclass”: attempting to use incompatible return type
我目前正在尝试在以下情况下应用协变返回类型(出于相关性考虑,代码会被严重截断):
属性类:
public abstract class Attribute
{
protected Number value;
public Attribute(Number initialValue)
{ this.value = initialValue;}
public abstract Number getValue();
}
DoubleAttribute类:
public class DoubleAttribute extends Attribute
{
public DoubleAttribute(double initialValue)
{ super(initialValue);}
@Override
public double getValue() //The error shows on 'double'
{ return this.value.doubleValue();}
}
遗憾的是,Android Studio不允许我将子类DoubleAttribute
的返回类型从Number
更改为double
。
Android Studio当前给我以下错误:
'getValue() in "attributes.DoubleAttribute" clashes with 'getValue()' in 'attributes.Attribute'; attempting to use incompatible return type.
目前,我对我在做什么错的想法一无所知。 我在Google上寻求的每个协变量返回类型示例都告诉我这应该可行,因为double
类是Number
的子类。
如果有人能指出我为什么Android Studio告诉我不允许这样做,我将不胜感激。
顺便说一句,我不确定我最初采用的方法是否正确。 我目前正在测量可以是String
类型, double
类型, long
类型或int
类型的属性,然后将它们存储在SQLite表中。 起初,我将value
变量声明为String,并且仅将其解析为double / float / int / long的String表示形式。 但是,我发现这需要过多的转换和类型检查,并寻求替代解决方案,但是我仍然怀疑我当前的继承解决方案是否是最佳解决方案。
如果有人也可以分享他们对此事的见解,我将不胜感激。
预先感谢您的付出,如果需要更多书面代码,我将编辑我的问题。
您不返回Double
类。 您返回一个原始的double。 基本类型不能是对象的子类。
public double getValue() //The error shows on 'double'
{
return this.value.doubleValue();
}
更改为(大写字母D)
public Double getValue() //The error shows on 'double'
{
return this.value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.