我有一个名为A的表面。现在我从接口A派生出3个类。
我如何在界面中添加一些方法,如getType(),它返回我正在处理的正确类型的实例。我不希望在嵌套的if else中执行类似demo instanceOf A的操作来检查实例类型。
答案 0 :(得分:2)
始终.getClass()
将返回对象的Class
。但它与instanceof
基本相同。您不应该知道具体类型。将逻辑放在每个实现中。例如:
interface Foo() {
int calculate();
}
class Bar implements Foo {
public int calculate() {
return 1+1;
}
}
class Baz implements Foo {
public int calculate() {
return 2+2;
}
}
Foo foo = getFoo();
int result = foo.calculate();
而不是:
Foo foo = getFoo();
int result = 0;
if (foo.getClass().equals(Bar.class)) {
result = 1+1;
} else of (foo.getClass().equals(Baz.class)) {
result = 2+2;
}