我需要能够识别正在调用特定方法的Object。因此,例如,如果我有以下
JLabel l = new JLabel("Hello");
JLabel label = new JLabel("HELLO");
label.setText("BYE");
我需要能够识别变量标签中的对象实际上是在调用setText而不是l。我确实设法获得了调用该方法的对象的类型,在本例中是JLabel,因为我使用SOOT来获得方法信息。然而,我真正需要的是使用这种方法的对象。
有没有一种方法可以识别调用该方法的实际对象?
是的,您可以通过反射找到谁在调用。请参阅这篇堆栈溢出文章:如何使用stacktrace或反射找到方法的调用方?了解有关如何做到这一点的更多信息。
然而,我担心的是,为了实现你想要的最终目标,你正试图以一种比必要的方式更困难的方式去做一些事情。你能把"this"作为参数传递给需要知道谁在调用的子方法吗?
没有合适的方法。你应该给你的方法传递一个参数,告诉它该做什么,而不是去嗅探堆栈。