繁体   English   中英

Java:在抽象类内部创建方法,该方法获取扩展类的名称

[英]Java: Within abstract class create method that gets name of extending class

先谢谢您的帮助。

首先,我不认为我想做的事是可行的,但是我仍然想问一下。 我有一个带有方法栏的抽象类foo。 我有几个扩展该类的类,没有一个重写方法栏(尽管所有这些都经常调用)。 我正在尝试调试问题,并希望打印出调用bar的类的名称。 因此,如果类temp扩展了foo并调用bar,则将输出“ temp”。

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

我想做的是这样的

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

但是我不能这样做,因为getSimpleName()不是静态方法,因此可以在无法实例化的东西中调用它。 另一种方法是使foo成为普通类(即不是抽象类)。 但是,我真的不愿意这样做。

无论如何,我能做我想做的事还是要“咬一口谚语”?

编辑:此代码是android应用程序的一部分。

您可以做类似的事情,

this.getClass().getSimpleName();

这只会打印对象(子类)的类名,而不是Foo本身。

之所以起作用,是因为this引用的是对象(属于一个具体的子类),而不是所使用的类本身(在这种情况下为Foo)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM