我不太确定如何在标题中说出来,但这是用例。
我有一堂课。 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
}
答案 0 :(得分:2)
您可以使用instanceof
。这样做并不是一个好习惯,但你可以做到以下几点:
if (x instanceof A) {
//TODO whatever related to A
}
答案 1 :(得分:1)
使用instanceof
或Class#getClass()
A returned = getA();
if (returned instanceof B) { .. }
else if (returned instanceof C) { .. }
getClass()
会返回:A.class
,B.class
,C.class
尽管如此,有时会认为使用instanceof
或getClass()
是不好的做法。