/**
* 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 というクラスが定義されています。これをサブクラス化し、サブクラスをシステムに登録します。適切なブロードキャストが送信されると、システムはサブクラスのインスタンスを作成し、そのメソッドの 1 つを呼び出します。
自分自身を登録するための静的メソッドを含む独自の 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 ではなく、インスタンス化するサブクラスを登録したいということです。