首先让我说我正在维护别人设计糟糕的代码,所以我可以改变它的程度有限。
现在发生的事情是他们创建了一系列由反射调用的方法。其中一种方法将 Map 作为其参数之一。在运行时,这个 Map 是用 Hashtable 实现的。
这是问题 - 我得到一个 NoSuchMethodException 因为它正在寻找一个以 Hashtable 作为参数的方法,即使 Hashtable 实现了 Map 接口。让我感到困惑的是,如果我不使用反射(在这种情况下是一个主要的设计更改)并传递了一个 Hashtable,它将使用 Map 参数调用该方法 - 那么为什么当我使用反射时它的工作方式不一样?
鉴于我几乎必须坚持使用反射,当我将实现该接口的类传递给它时,有什么方法可以让带有 Map 参数的方法被调用?
如果你愿意,我可以模拟一些代码来演示......