0

这与 Java 语言有关。

假设我有一个超类 A 和子类 X 和 Y。我在 A 中有一个方法需要知道 X 和 Y 的类型(它是一个外部库)。

我在 A 上有一个名为someMethod(). 我的问题是:在someMethod()实现中是否有办法找出它是被 X 还是 Y 调用的?

如果不清楚,请告诉我。

编辑^2:

A类的具体情况是这样的。

public void delete() {
    Datastore ds = Dao.instance().getDatabase();
    ds.delete(this.getClass(),this.id);
}

我希望能够做 X.delete() 和 Y.delete()

4

2 回答 2

3

是的:只需调用getClass(). 例如:

class A {
  public void someMethod() {
    System.out.println(getClass().getSimpleName());
  }
}

这将打印出来,X或者Y取决于调用它的对象的运行时类。

于 2012-05-15T15:58:11.477 回答
3

您可以使用以下命令轻松找出该方法是X 还是 Y 上调用的getClass()

public void someMethod() {
    System.out.println(getClass()); // Will display the execution-time type
}

但当然,任何类(不仅仅是 X 或 Y)都可以调用该公共方法。如果您需要获取信息,则需要获取堆栈跟踪 - 由于内联等原因,这可能并不总是可靠的。正确的操作过程将取决于您为什么需要此信息。

于 2012-05-15T15:58:29.357 回答