void main(){
Animal a1 = Animal();
Cat c1 = Cat();
AnimalCage ac1 = AnimalCage();
ac1.setAnimal(a1); //error: The method 'setAnimal' isn't defined for the type 'AnimalCage'.
}
class AnimalCage{
Animal? _animal;
set setAnimal(Animal animal){
print('animals setter');
_animal = animal;
}
}
class Animal {
}
我得到了上面的错误,但我不知道是什么错了。
使用setter有什么问题吗?
如果我将setAnimal定义为一个方法,错误将消失,但我认为setter没有问题。
由于setAnimal
是一个setter,所以您不能像使用方法那样使用它。
只是做:
ac1.setAnimal = a1;
为了避免混淆,你不应该用set
作为setter名称的前缀,只要使用你想设置的名称,就像这样:
set animal(Animal animal){
print('animals setter');
_animal = animal;
}
然后像这样使用setter:
ac1.animal = a1;
如果您真的想使用方法语法,那么创建一个方法,如下所示:
void setAnimal(Animal animal){
print('animals setter');
_animal = animal;
}
你可以这样写:
ac1.setAnimal(a1);