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

Java/Android Studio-协变返回类型-方法;“子类”;与“中的方法冲突”;“基类”:试图使用不兼容的返回类型,java,android,inheritance,Java,Android,Inheritance,我目前正试图在以下情况下应用协变返回类型(代码因相关性而被严重截断): 属性类: public abstract class Attribute { protected Number value; public Attribute(Number initialValue) { this.value = initialValue;} public abstract Number getValue();

我目前正试图在以下情况下应用协变返回类型(代码因相关性而被严重截断):

属性类:

  public abstract class Attribute
    {
         protected Number value;
         public Attribute(Number initialValue)  
         {     this.value = initialValue;}

         public abstract Number getValue();
    }
双属性类:

  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当前给了我以下错误:

“attributes.DoubleAttribute”中的“getValue()”与“attributes.Attribute”中的“getValue()”冲突;试图使用不兼容的返回类型。

对于我做错了什么,我目前不知所措。我在Google上搜索的每一个协变返回类型示例都告诉我这应该是可行的,因为
double
类是
Number
的子类

如果有人能帮我指出为什么Android Studio告诉我这是不允许的,我将非常感激

另一方面,我不完全确定我所采取的方法一开始是否正确。我目前正在测量可以是
String
类型、
double
类型、
long
类型或
int
类型的属性,然后将它们存储在SQLite表中。首先,我将
变量声明为字符串,并以double/float/int/long的字符串表示形式进行解析。然而,我发现这需要大量的强制转换和类型检查,并寻找了一个替代的解决方案,但我仍然怀疑我当前的继承解决方案是否是一个最佳的解决方案

如果有人也能分享他们对这件事的见解,我将更加感激


提前感谢您的努力,如果需要更多的书面代码,我将编辑我的问题。

您不会返回
类。返回一个基本的双精度。基元类型不能是对象的子类

public double getValue() //The error shows on 'double'
{
    return this.value.doubleValue();
}
更改为(大写D)


谢谢你!现在有没有有效的方法来确定调用
attributea=newdoubleAttribute(20.0d)时返回的变量类型;a、 getValue()
。我这样问是因为当我想在SQLite数据库中插入值时,我必须使用
ContentValues.put(key,value)
将其放入
ContentValues
对象中。但是,此
put(key,value)
方法只接受
Number
的子类(除其他子类外),如
long
double
,而不是
Number
。如果不再次诉诸于过度的类型检查和铸造,人们将如何进行这项工作?再次提前感谢!
public Double getValue() //The error shows on 'double'
{
     return this.value;
}