/**
* this is my class, yadayada. Needs to be subclassed to be useful.
*/
public abstract class MyClass {
...
public static void myMethod() {
// What is the name of the subclass that's using this?
System.out.println("Called from class " + this.getClass().class.getName());
// Doesn't work because there's no "this" in a static method.
}
}
编辑:这就是我想要发生的事情:
public class FooClass extends MyClass {
...
}
FooClass.myMethod(); // I would like this to print "Called from class FooClass"
我完全没主意了。
编辑:对于那些想知道我为什么这样做的人来说,这实际上是一个 Android 问题。
Android 定义了一个名为 BroadcastReceiver 的类。您将其子类化并向系统注册您的子类。当发送适当的广播时,系统会创建您的子类的实例并调用其方法之一。
我想创建自己的 BroadcastReceiver 子类,其中包含一个用于注册自身的静态方法。但我也希望它是可子类化的。它看起来像这样:
/**
* My special-purpose BroadcastReceiver. Subclass this to use it.
*/
public class MyClass extends BroadcastReceiver {
public static scheduleAnAlarm(long when) {
// do some class-specific stuff
AlarmManager.scheduleBroadcast(MyClass.class, when);
}
public void onBroadcast() {
System.out.println("You should subclass MyClass for it to be useful");
}
}
我的问题是我想注册要实例化的子类,而不是 MyClass。