0

我需要能够识别正在调用特定方法的对象。因此,例如,如果我有以下内容

    JLabel l = new JLabel("Hello");
    JLabel label = new JLabel("HELLO");
    label.setText("BYE");

我需要能够识别变量标签中的对象实际上是调用 setText 而不是 l。我确实设法获取了调用该方法的对象的类型,在本例中是 JLabel,因为我使用 SOOT 来获取方法信息。但是我真正需要的是使用这种方法的对象。

有没有办法能够识别调用该方法的实际对象?

4

2 回答 2

3

是的,你可以通过反射找到谁在打电话。请参阅此堆栈溢出帖子:如何使用堆栈跟踪或反射找到方法的调用者?有关如何执行此操作的更多信息。

但是,我担心您正在尝试以比实现您所追求的任何最终目标所必需的方式更困难的方式来做某事。您能否将“this”作为参数传递给需要知道谁在调用的子方法?

于 2012-03-17T17:13:55.970 回答
0

没有合适的方法。您应该向您的方法传递一个参数来告诉它要做什么,不要去嗅探堆栈。

于 2012-03-17T17:08:24.573 回答