我有一个 Mapper 类的实现,它接受 Object 作为其中一个map(Object object)
函数的参数。其余map(T t)
函数接受整数或类等。
当我尝试传递一个 int 时,它会自动装箱为 Integer 并调用map(Object object)
而不是map(Integer integer)
.
我对 Double Dispatch 做了一些研究,发现我可以使用访客模式。但这不适用于我的情况,因为我没有传递可以让它们实现接口的自定义对象accept()
。
上述方法接受每个对象。
当您有一个也接受 Object 的方法时,是否有针对 Java 对象进行双重调度的解决方案?
public BaseMatcher map(Object object) {
return something();
}
public BaseMatcher map(Integer integer) {
return somethingOther();
}
public BaseMatcher map(Class<? extends Exception> klass) {
return somethingOtherOther();
}
对这些 map() 函数的调用如下:foo(Object object) { mapper.map(object); }
这导致map(Object object)
被调用。