我有一个特定的SomeInterface,我有许多实现此接口的类。所有这些类都具有接口未定义的someMethod()

假设我有一个类型为someVariable的变量SomeInterface,我想在其上调用someMethod()。一种实现方法是将SomeInterface向下转换为实现SomeClassSomeInterface,然后像这样调用someMethod

((SomeClass) someVariable).someMethod()


但是我不知道实现SomeInterface的哪个类存储在someVariable中。调用由基础类实现但未由我编写的接口定义的方法的另一种干净方法是什么。

最佳答案

最脏的解决方案是使用反射,使用instanceof较不脏,但仍不是最佳选择。最小的解决方案是使用someMethod()创建另一个接口,并使类也实现该接口。然后,您可以强制转换为该接口并调用该方法。

((SomeInterface) someVariable).someMethod();


当然,这要求您能够修改相关的类。

关于java - 向下转换的类的调用方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47300302/

10-11 19:59