Dart-在Android Studio 3.6.3中进行类型检查时,将参数type int视为num
下面的代码生成类型错误:Dart-在Android Studio 3.6.3中进行类型检查时,将参数type int视为num,dart,Dart,下面的代码生成类型错误: “无法将参数类型int分配给参数类型num” 当定义为int时,sum为什么被视为num 如果我将sum从int更改为var,则错误消失 有人能解释为什么会这样吗 abstract class ISomeInterface { void add<T>(T x); } class SomeClass implements ISomeInterface { int sum; @override void add<int>(int
“无法将参数类型int分配给参数类型num”
当定义为int
时,sum
为什么被视为num
如果我将sum
从int
更改为var
,则错误消失
有人能解释为什么会这样吗
abstract class ISomeInterface {
void add<T>(T x);
}
class SomeClass implements ISomeInterface {
int sum;
@override
void add<int>(int x) {
sum = sum + x;
}
}
抽象类接口{
空加(tx);
}
类SomeClass实现了一个接口{
整数和;
@凌驾
无效添加(整数x){
sum=sum+x;
}
}
是否希望子类专用于单个类型?如果将泛型从方法级移到类级,它将编译。@gugge是的,想法是该方法可以处理int
或double
。如果我删除了add()
上的泛型类型规范,则不会出现类型检查错误。但是,我想知道为什么会发生这种情况(我假设我不理解Dart的一些规则/概念)。嗯,我想这对编译器来说是一个困惑,因为在方法(sum)之外存在类型依赖项。如果你想同时处理int和double,你可以使用Someclass接口和类型之和T
使它成为类级泛型。也许你可以在这里找到一些答案:啊,我想你找到了。我正在收紧子类中param类型的范围,这是不允许的。谢谢@gugge!您希望您的子类专用于单个类型吗?如果将泛型从方法级移到类级,它将编译。@gugge是的,想法是该方法可以处理int
或double
。如果我删除了add()
上的泛型类型规范,则不会出现类型检查错误。但是,我想知道为什么会发生这种情况(我假设我不理解Dart的一些规则/概念)。嗯,我想这对编译器来说是一个困惑,因为在方法(sum)之外存在类型依赖项。如果你想同时处理int和double,你可以使用Someclass接口和类型之和T
使它成为类级泛型。也许你可以在这里找到一些答案:啊,我想你找到了。我正在收紧子类中param类型的范围,这是不允许的。谢谢@gugge!