/**
* 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的。
對於這一切的答案'MyClass.class',他正在試圖讓不特定的子類的'class'。正如我在我的答案中指出的那樣,從靜態方法中不可能實現。 –