Java继承:如何找到对象所属的子类?

时间:2017-03-23 20:28:43

标签: java inheritance

我不太确定如何在标题中说出来,但这是用例。

我有一堂课。 Test有一个名为Letter的属性

public class Test() {
    Letter x;
}

Letter可以是几个子类中的一个。

class A()
class B()
class C()

现在假设在一个类(让我们称之为驱动程序)中,我有一个Test实例。我想弄清楚这个Test的字母是A,B,C等,以便我可以访问子类的唯一属性。参见:

public class Driver() {
    Test t;
}

如果我使用t.getClass(),我会得到Class.Test,还是会得到子类(例如Class.A)? Driver类是否可以知道x的子类?

是否可以创建如下方法:

public Class getSubclassFromLetter(Letter x) {
    // Find subclass from the letter
}

2 个答案:

答案 0 :(得分:2)

您可以使用instanceof。这样做并不是一个好习惯,但你可以做到以下几点:

if (x instanceof A) {
    //TODO whatever related to A
}

答案 1 :(得分:1)

使用instanceofClass#getClass()

A returned = getA();

if (returned instanceof B) { .. }
else if (returned instanceof C) { .. }

getClass()会返回:A.classB.classC.class

尽管如此,有时会认为使用instanceofgetClass()是不好的做法。