public class Base {
public static void main(String[] args) {
Base b = new Derived();
b.printName();
}
public void printName() {
System.out.println(this.getClass());
}
}
class Derived extends Base {
}
上面的代码打印派生类的名称。我怎样才能让它打印基类名称。请记住,代码用于分类问题。我实际上并不需要输出课程名称。我需要在printName
中的this
正好是Base
的类型,即使在Derived
实例中也是如此。这不是名称this
,任何工作都可以。可能吗?Java中是否有任何非多态基类引用?
为了进一步指定问题。我在基类中使用的一些第三方库没有在派生类实例中完成他们的工作。我知道这是因为他们调用了我通过的this
的getClass(),但没有得到他们预期的Class<?>
。我该如何解决这个问题?
为什么不直接要求'instanceof Base'?尽管一般来说,这表明一开始就是一个不可思议的设计。另外,除非特别指定一个工厂(或者只是测试,这次可能就是这种情况),否则要求在超类中要求一个子类。 –
您是否意识到根类始终是“Object”的事实?因此,从“派生”的角度来看,您将如何指定何时停止攀升继承链? – Siguza
@singhakash OP希望它是一个“派生”,但报告为“基础”。 –