我有
interface FooI
class FooA implements FooI
class FooB implements FooI
class FooC implements FooI
Run Code Online (Sandbox Code Playgroud)
我写了一个类"Handler",它有以下方法
static double handle(FooA f)
static double handle(FooB f)
static double handle(FooI f)
Run Code Online (Sandbox Code Playgroud)
我有一个像下面这样的功能:
void caller(FooI f)
{
Handler.handle(f);
}
Run Code Online (Sandbox Code Playgroud)
f只是被称为实现FooI的类.然而,f是FooA的一个实例
调用FooI的方法而不是调用FooA的方法.
当我使用f.getClass().getName()时,我得到了正确的类名(FooA).
我很困惑,因为我期望最适合的方法被调用,即FooA的方法.
我想使用FooI方法作为后备来处理可以在以后实现的类,并且我还想处理f而没有一个大函数,我正在对实现我的接口的所有当前已知类进行instanceof检查.
这样做有什么好办法?
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |