/**
 * 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 ではなく、インスタンス化するサブクラスを登録したいということです。