Можно ли переопределить Object#equals(Object)
локально при использовании list.contains(someObject)
?
Пример:
class SomeObject {
...
private int id;
private String name;
@Overrdide
public boolean equals(Object other){
...
return this.id == other.id;
}
}
Но что, если я хочу другого типа равных, когда я использую list.contains(someObject)
? Например, я хочу знать, содержит ли список определенное имя? Возможно ли переопределить Object#equals(Object)
"анонимно"?
Более конкретное объяснение, почему мне это нужно:
int objectId = ... // Some event which passes me the attribute of an object but not the object itself
Теперь у меня есть List<SomeObject> someObjects
, и я хотел бы знать, содержит ли этот список объект с objectId
, не обязательно повторяя его.
Одно "решение", о котором я мог подумать, будет использовать Map<Integer, SomeObject> mapping
, а затем someObject = mapping.get(objectId)
EDIT: Мой вопрос не является дубликатом, так как я специально прошу переопределить Object#equals(Object)
.