Java:在抽象 class 中创建获取扩展名称的方法 class
Java: Within abstract class create method that gets name of extending class
在此先感谢您的帮助。
首先,我不认为我想做的事是可能的,但我想我还是可以问问。我有一个带有方法 bar 的抽象 class foo。我有几个 class 扩展这个 class 和 none 覆盖方法 bar(尽管都经常调用 bar)。我正在尝试调试一个问题,并想打印出调用 bar 的 class 的名称。因此,如果 class temp 扩展 foo 并调用 bar,则 "temp" 将被打印出来。
一种方法是为每个扩展 foo 的 class 覆盖 bar 方法,但这会有点麻烦,因为它还会实例化 foo 中的私有变量。因此,我需要单独的方法来实例化 foo 中私有的每个变量,以覆盖 temp 中的 bar。
我想做的是这样的
System.out.println(Class.getSimpleName());
但我不能这样做,因为 getSimpleName() 不是静态方法,因此可以在无法实例化的对象中调用。另一种方法是使 foo 成为正常的 class (即不是抽象的)。但是,我真的不想这样做。
无论如何我可以做我想做的事还是我必须做 "bite the proverbial bullet"?
编辑:
此代码是 android 应用程序的一部分。
你可以做类似的事情,
this.getClass().getSimpleName();
这只会打印对象的 class 名称(子class),而不是 Foo 本身。
它起作用是因为 this
指的是对象(它属于具体的子 class)而不是 class 本身(在本例中为 Foo)它正在被使用。
在此先感谢您的帮助。
首先,我不认为我想做的事是可能的,但我想我还是可以问问。我有一个带有方法 bar 的抽象 class foo。我有几个 class 扩展这个 class 和 none 覆盖方法 bar(尽管都经常调用 bar)。我正在尝试调试一个问题,并想打印出调用 bar 的 class 的名称。因此,如果 class temp 扩展 foo 并调用 bar,则 "temp" 将被打印出来。
一种方法是为每个扩展 foo 的 class 覆盖 bar 方法,但这会有点麻烦,因为它还会实例化 foo 中的私有变量。因此,我需要单独的方法来实例化 foo 中私有的每个变量,以覆盖 temp 中的 bar。
我想做的是这样的
System.out.println(Class.getSimpleName());
但我不能这样做,因为 getSimpleName() 不是静态方法,因此可以在无法实例化的对象中调用。另一种方法是使 foo 成为正常的 class (即不是抽象的)。但是,我真的不想这样做。
无论如何我可以做我想做的事还是我必须做 "bite the proverbial bullet"?
编辑: 此代码是 android 应用程序的一部分。
你可以做类似的事情,
this.getClass().getSimpleName();
这只会打印对象的 class 名称(子class),而不是 Foo 本身。
它起作用是因为 this
指的是对象(它属于具体的子 class)而不是 class 本身(在本例中为 Foo)它正在被使用。