Java/Android Studio - 协变 Return 类型 - "subclass" 中的方法与 "baseclass" 中的方法冲突:尝试使用不兼容的 return 类型
Java/Android Studio - Covariant Return Type - Method in "subclass" clashes with method in "baseclass": attempting to use incompatible return type
我目前正在尝试在以下情况下应用协变 return 类型(代码因相关性而被严重截断):
属性class:
public abstract class Attribute
{
protected Number value;
public Attribute(Number initialValue)
{ this.value = initialValue;}
public abstract Number getValue();
}
双属性class:
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 不允许我将子 class DoubleAttribute
的 return 类型从 Number
更改为 double
.
Android Studio 当前出现以下错误:
'getValue() in "attributes.DoubleAttribute" clashes with 'getValue()' in 'attributes.Attribute'; attempting to use incompatible return type.
我目前不知道自己做错了什么。我在 Google 上寻找的每个协变 return 类型示例都告诉我这应该有效,因为 double
class 是 [= 的子 class 18=].
如果有人能帮助我指出为什么 Android Studio 告诉我这是不允许的,我将不胜感激。
附带说明一下,我不完全确定我采用的方法是否正确。我目前正在测量 String
类型、double
类型、long
类型或 int
类型的属性,然后将它们存储在 SQLite table 中。起初我将 value
变量声明为一个字符串,并在 double/float/int/long 的字符串表示中进行了解析。然而,我发现这需要大量的过度转换和类型检查并寻求替代解决方案,但我仍然怀疑我当前的继承解决方案是否是最佳解决方案。
如果哪位大神也能分享一下对这件事的见解,我将不胜感激。
在此先感谢您的努力,如果需要更多的书面代码,我会编辑我的问题。
你没有return一个Double
class。你 return 一个原始的替身。原始类型不能是对象的子class。
public double getValue() //The error shows on 'double'
{
return this.value.doubleValue();
}
更改为(大写 D)
public Double getValue() //The error shows on 'double'
{
return this.value;
}
我目前正在尝试在以下情况下应用协变 return 类型(代码因相关性而被严重截断):
属性class:
public abstract class Attribute
{
protected Number value;
public Attribute(Number initialValue)
{ this.value = initialValue;}
public abstract Number getValue();
}
双属性class:
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 不允许我将子 class DoubleAttribute
的 return 类型从 Number
更改为 double
.
Android Studio 当前出现以下错误:
'getValue() in "attributes.DoubleAttribute" clashes with 'getValue()' in 'attributes.Attribute'; attempting to use incompatible return type.
我目前不知道自己做错了什么。我在 Google 上寻找的每个协变 return 类型示例都告诉我这应该有效,因为 double
class 是 [= 的子 class 18=].
如果有人能帮助我指出为什么 Android Studio 告诉我这是不允许的,我将不胜感激。
附带说明一下,我不完全确定我采用的方法是否正确。我目前正在测量 String
类型、double
类型、long
类型或 int
类型的属性,然后将它们存储在 SQLite table 中。起初我将 value
变量声明为一个字符串,并在 double/float/int/long 的字符串表示中进行了解析。然而,我发现这需要大量的过度转换和类型检查并寻求替代解决方案,但我仍然怀疑我当前的继承解决方案是否是最佳解决方案。
如果哪位大神也能分享一下对这件事的见解,我将不胜感激。
在此先感谢您的努力,如果需要更多的书面代码,我会编辑我的问题。
你没有return一个Double
class。你 return 一个原始的替身。原始类型不能是对象的子class。
public double getValue() //The error shows on 'double'
{
return this.value.doubleValue();
}
更改为(大写 D)
public Double getValue() //The error shows on 'double'
{
return this.value;
}