Java:在抽象类中创建获取扩展类名称的方法

标签 java android abstract-class

预先感谢您的帮助。

首先,我认为我想做的事情是不可能的,但我想我还是可以问。我有一个带有方法 bar 的抽象类 foo 。我有几个类扩展了这个类,但没有一个类重写方法 bar (尽管都经常调用 bar )。我正在尝试调试一个问题,并想打印出调用 bar 的类的名称。因此,如果类 temp 扩展 foo 并调用 bar,则会打印出“temp”。

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

我想做的是这样的事情

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

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

无论如何,我可以做我想做的事,还是我必须“咬紧牙关”?

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

最佳答案

你可以这样做,

this.getClass().getSimpleName();

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

它之所以有效,是因为 this 引用了对象(属于具体子类),而不是它所使用的类本身(在本例中为 Foo)。

关于Java:在抽象类中创建获取扩展类名称的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198240/

相关文章:

java - 如何在 Java 中编写一个比较器来概括两种类型的对象?

java - 什么是真正可行的本地平台即服务实现?

java - Photoshop 图片在 Android 应用程序开发中无法运行(使用 Eclipse)

typescript - 在 TypeScript 中扩展与实现纯抽象类

java - 在方法中实现带有附加参数的接口(interface)

python - 确定 Python 类是抽象基类还是具体类

java - 设置 JFileChooser 打开当前目录

java - 使用 JGit 将子模块添加到非空路径

Android:ListView自带字体

android - 我的数据库应该存储在 Flutter 中的什么位置?