operator == method
Indicates whether some other object is "equal to" this Optional.
The other object is considered equal if:
- it is also an Optional and;
- both instances have no value present or;
- the present values are "equal to" each other via ==.
obj
an object to be tested for equality
Returns true
if the other object is "equal to" this object otherwise false
.
Example
Optional<String> opt1 = Optional.of("hello");
Optional<String> opt2 = Optional.of("hello");
Optional<String> opt3 = Optional.of("world");
Optional<String> empty1 = Optional.empty();
Optional<String> empty2 = Optional.empty();
print(opt1 == opt2); // true (same values)
print(opt1 == opt3); // false (different values)
print(empty1 == empty2); // true (both empty)
print(opt1 == empty1); // false (one has value, one doesn't)
// Works with complex objects
class Person {
final String name;
Person(this.name);
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is Person && name == other.name;
@override
int get hashCode => name.hashCode;
}
Optional<Person> person1 = Optional.of(Person("Alice"));
Optional<Person> person2 = Optional.of(Person("Alice"));
print(person1 == person2); // true
Implementation
@override
bool operator ==(Object other) {
if (identical(this, other)) {
return true;
}
return other is Optional && _value == other._value;
}