有没有办法识别在java中调用特定方法的对象?

时间:2012-03-17 16:59:08

标签: java object methods soot

我需要能够识别调用特定方法的Object。所以,如果我有以下

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

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

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

2 个答案:

答案 0 :(得分:3)

是的,你可以通过反思找到谁在打电话。有关如何执行此操作的详细信息,请参阅此堆栈溢出帖子:How do I find the caller of a method using stacktrace or reflection?

但是,我会担心你会尝试用一种比实现任何最终目标更加艰难的方式来做某事。你能否将“this”作为参数传递给需要知道谁在调用的子方法?

答案 1 :(得分:0)

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