Dart 推断类型不正确

问题描述 投票:0回答:1

Dart 通过继承错误地推断类型。

Dart 类型推断无法与继承和字段覆盖一起正常工作。

如果我们没有显式地写

final Dog pet = Dog();
(重复),分析器会认为
pet
Animal
。 (这并没有错,但是有问题,应该是
Dog

class Animal {}

class Dog extends Animal {
  void bark() {
    print("Daawg!");
  }
}

abstract class Owner {
  Animal get pet;
}

class DogOwner extends Owner {
  @override
  final pet = Dog();
}

void main() {
  final dog = Dog();
  dog.bark(); // pass

  final owner = DogOwner();
  owner.pet.bark();  // error. Why ??
}

这是 Dart 中的错误还是有意为之?我很好奇为什么要这样做。

flutter dart
1个回答
0
投票

只需在您的代码中添加这一行..

class DogOwner extends Owner { @override final Dog pet = Dog(); // you need specify Dog type or you can add var }
© www.soinside.com 2019 - 2024. All rights reserved.