所以我有以下inteface I
,它由类A
和B
实现:
interface I { ... }
class A implements I { ... }
class B implements I { ... }
然后我有另一个接口OverrideMe
,其方法有一个对象I
作为参数,一个类覆盖该方法,并根据该参数的实际类别而有所不同:
interface OverrideMe {
void method(I parameter)
}
class Overriding implements OverrideMe {
@Override
void method(I parameter) {
if (I instanceof A) {
// Code block for A
}
else if (I instanceof B) {
// Code block for B
}
}
}
有没有办法按类型区分两个代码块而不使用instanceof
?我不确定是否可以使用继承来完成。
请注意,我无法控制I
,A
,B
,我必须按原样使用它们。
答案 0 :(得分:1)
是的,你可以根据你想在代码块中做什么来做。如果您正在寻找在A或B实例上运行某些b逻辑。您可以在接口I中提供方法声明,并在A类和B类中提供实现。示例,
interface I {
void doSomething();
}
class A implements I {
void doSomething(){
//do something here
}
}
class B implements I {
void doSomething(){
//do something here
}
}
interface OverrideMe {
void method(I parameter)
}
class Overriding implements OverrideMe {
@Override
void method(I parameter) {
parameter.doSomething();
}
}
如果不是上述情况,您可能必须使用instanceof