繁体   English   中英

Java / Android Studio-协方差返回类型-“子类”中的方法与“基类”中的方法冲突:尝试使用不兼容的返回类型

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM