Я хочу сделать что-то похожее на подстановочные знаки Scala для сопоставления с образцом, поэтому мне нужно создать экземпляр объекта типа T
, который всегда будет возвращать true
при вызове equals()
- метода.
Я знаю, что это довольно странно, поэтому, если бы я попытался вызвать любую другую функцию на этом объекте, мой компьютер мог бы загореться, единственное, что важно, это equals()
.
Что у меня естьдо сих пор:
public void match(Object toMatch, Effect0 effect) {
val bothNull = toMatch == null && value == null;
val equals = toMatch != null && toMatch.equals(value);
if(bothNull || equals) {
effect.f();
}
}
public static Object any() {
return new Object() {
@Override
public boolean equals(Object o) {
return true;
}
};
}
Но мне нужно как-то поднять any()
в тип T
.
Использование будет выглядеть так:
myClass.match(new MyClass(any(), "foo", "bar", any()), () -> ...);
Важно то, что я не могу, например, сравнить Pair<String, Integer>
с Pair<Integer, String>
.Вот почему мне нужны дженерики.
Возможно ли это?