这与Java语言有关。
假设我有一个超类A和X和Y的子类。我在A中有一个方法需要知道X和Y的类型(它是一个外部库)。
我在A上有一个名为someMethod()
的方法。我的问题是:在someMethod()
实现中是否有办法确定它是由X还是Y调用?
如果不清楚,请告诉我。
EDIT ^ 2:
A类的具体情况如下所示。
public void delete() {
Datastore ds = Dao.instance().getDatabase();
ds.delete(this.getClass(),this.id);
}
我希望能够做X.delete()和Y.delete()
答案 0 :(得分:3)
是的:只需致电getClass()
即可。例如:
class A {
public void someMethod() {
System.out.println(getClass().getSimpleName());
}
}
这将打印出X
或Y
,具体取决于调用它的对象的运行时类。
答案 1 :(得分:3)
您可以使用getClass()
轻松找出该方法是否在 X或Y上调用:
public void someMethod() {
System.out.println(getClass()); // Will display the execution-time type
}
但当然公共方法可以通过任何类(不仅仅是X或Y)来调用。如果您需要获取 信息,则需要获取堆栈跟踪 - 由于内联等原因可能并不总是可靠。正确的操作过程将取决于为什么你想要这些信息。