我想做一些类似于scala的通配符的事情来进行模式匹配,
所以我需要实例化一个类型的对象
T
总会回来的
true
当呼叫
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>
. 所以我需要仿制药。
有可能吗?