Java中是否存在任何非多态基类引用?

时间:2015-10-19 14:55:55

标签: java

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 {

}

上面的代码打印派生的类名。如何让它打印基类名称。请记住,代码用于对问题进行分类。我实际上不需要打印类名。即使在this实例中,我也需要printName中的Base正好是Derived 的类型。它不是名字this,任何工作都可以。可能吗?

进一步指明问题。我在基类中使用的某些第三方库没有在Derived类实例中完成它们的工作。而且我认为这是因为他们调用了我传入的this的getClass()但没有得到他们预期的Class<?>。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我认为你唯一能做的就是

System.out.println(Base.class);

某些GUI甚至可能在重命名Base类时自动重命名。

答案 1 :(得分:0)

这是不可能的,因为Java方法总是虚拟的(那些你可以覆盖的方法)。

另请参阅:Are all method in java implictly virtual