Java:在抽象类中创建一个方法,该方法获取继承类的名称。

16 浏览
0 Comments

Java:在抽象类中创建一个方法,该方法获取继承类的名称。

非常感谢您的帮助。

首先,我不认为我想做的事情是可能的,但我想还是问一下。我有一个抽象类foo,里面有一个方法bar。我有几个继承这个类的类,但没有一个类覆盖了方法bar(尽管所有类都经常调用bar)。我正在尝试调试一个问题,想要打印出调用bar方法的类的名称。所以如果一个类temp继承了foo并调用了bar,将打印出"temp"。

一种方法是为继承foo的每个类重写bar方法,但这会有点麻烦,因为它还会实例化foo中的私有变量。因此,我需要单独的方法来实例化在foo中是私有的每个变量以重写temp中的bar方法。

我想做的是这样的:

System.out.println(Class.getSimpleName());

但我不能这样做,因为getSimpleName()不是一个静态方法,因此不能在无法实例化的地方调用。另一种方法是将foo变成一个普通类(即非抽象类)。然而,我真的不想这样做。

有没有办法实现我想做的事情,还是我必须"咬下这个老生常谈的子弹"?

0
0 Comments

问题的出现原因是想要在抽象类中创建一个方法,该方法能够获取继承类的名称。解决方法是使用this.getClass().getSimpleName()来获取继承类的名称。这个方法只会打印子类对象的类名,而不是抽象类本身的类名。这个方法之所以有效是因为this指的是具体子类的对象,而不是抽象类本身(在这种情况下是Foo)。我注意到getClass().getSimpleName()也能够起到同样的作用。是的,你总是可以在没有this关键字的情况下调用方法或字段。但是使用this可以使代码更易读。

0