如何在运行时获取实现类型

时间:2011-07-18 11:20:59

标签: java

我有一个名为A的表面。现在我从接口A派生出3个类。

我如何在界面中添加一些方法,如getType(),它返回我正在处理的正确类型的实例。我不希望在嵌套的if else中执行类似demo instanceOf A的操作来检查实例类型。

1 个答案:

答案 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;
}