我使用以下代码使用重写的==
运算符比较两个Person
对象:
class Person {
String ssn;
String name;
Person(this.ssn, this.name);
bool operator ==(Object other) {
return identical(this, other) ||
other is Person &&
ssn == other.ssn &&
name == other.name;
}
@override int get hashCode => (ssn + name).hashCode;
}
main() {
var bob = Person('111', 'Bob');
var robert = Person('123', 'Robert');
print(bob == robert); // false
}
然而,由于此代码与Person
对象完美配合,是否有一种方法可以编写一个适用于任何两种类型的==
运算符函数来比较它们,以检查它们是否相等?
如果你的问题是如何不为所有类编写equals
和hashCode
实现,那么答案是现在没有办法。但是您可以使用包来简化这个过程。例如,您可以使用Equatable包,然后您的类将如下所示:
import 'package:equatable/equatable.dart';
class Person extends Equatable {
String ssn;
String name;
Person(this.ssn, this.name);
@override
List<Object> get props => [name, ssn];
}