【发布时间】:2015-08-25 07:43:12
【问题描述】:
提前感谢您的帮助。
首先,我不认为我想做的事是可能的,但我想我还是可以问。我有一个带有方法栏的抽象类 foo。我有几个类扩展了这个类并且没有一个覆盖方法栏(尽管都经常调用栏)。我正在尝试调试一个问题,并想打印出调用 bar 的类的名称。因此,如果一个类 temp 扩展 foo 并调用 bar,“temp”将被打印出来。
一种方法是为每个扩展 foo 的类重写 bar 方法,但这会有点麻烦,因为它还会在 foo 中实例化私有变量。因此,我需要单独的方法来实例化 foo 中的每个私有变量以覆盖 temp 中的 bar。
我想做的是这样的
System.out.println(Class.getSimpleName());
但我不能这样做,因为 getSimpleName() 不是静态方法,因此可以在无法实例化的东西中调用。另一种方法是使 foo 成为普通类(即非抽象类)。但是,我真的不想这样做。
我是否可以做我想做的事,或者我将不得不“咬紧牙关”?
编辑: 此代码是 android 应用程序的一部分。
【问题讨论】:
-
this 有帮助吗?您基本上会将其保留在抽象类中的
foo方法中。 -
您是否正在寻找类似
this.getClass().getSimpleName()的内容。这只会打印(子类的)对象的类名,而不是 Foo 本身。 -
不,不会的。我应该指定我在 android 应用程序中使用这个 java 类。我正在编辑我的问题以反映这一点
-
@Codebender 就像一个魅力。如果您想添加答案,我会接受。为什么这对 Class.getSimpleName() 有效?
-
因为
getSimpleName不是静态方法。您需要一个特定的Class实例,它才能工作。
标签: java android abstract-class