следующее сообщение об ошибке:Ошибка: недопустимый переопределение в ==
ERROR: Invalid override. The type of Bar.== ((Bar) → bool) is not a subtype of
Foo.== ((Foo) → bool).
Происходит в строке 10 следующего кода (v1.15.0):
1 class Foo {
2 int foo;
3 Foo(this.foo);
4 bool operator ==(Foo a) => foo == a.foo;
5 int get hashCode => foo * 17;
6 }
7 class Bar extends Foo {
8 int bar;
8 Bar(int foo, this.bar) : super(foo);
10 bool operator ==(Bar a) => (bar == a.bar) && (foo == a.foo);
11 int get hashCode => bar * (foo * 17);
12 }
Я предположил, что бар является подтипом от Foo. В чем проблема с этим кодом?
Не связанный с ошибкой метод 'operator ==' должен принимать любые 'Object'. Если у вас есть код выше и есть 'Bar' и' Foo' в том же 'HashSet', тогда вы получаете ошибки типа, когда он пытается сделать' bar == foo', потому что 'Bar.operator ==' doesn ' t принять 'Foo'. – lrn