getting call hierarchy of a method using reflectio

2019-06-04 05:05发布

问题:

i used java reflections to get methods from a class(loaded those classes).Now i want to get the call hierarchy of those methods.How can i use call hierarchy option in eclipse IDE for that?any examples or links????

回答1:

The solutions proposed is to use Thread.currentThread().getStackTrace() in order to obtain the current trace of callers.

However, you want to get this information not for the currently executing method, but for any method on any class. This can't be done easily. I think you have to inspect all classes on the classpath with a bytecode utility and match the calling instructions. Something you will spend too much time on, and I'm pretty sure it isn't needed, unless you are developing an IDE.

Anyway, you can get Eclipse or NetBeans sources and see how it is implemented there.



回答2:

StackTraceElement[] stackTrace = new Throwable().getStackTrace();


回答3:

You can use the StackTrace object.

But that looks very brittle to me as approach. Better avoid this kind of logic... Why not passing the caller as an argument to thé method?



回答4:

Throw an exception in the method which is at the root of the hierarchy. Then you can catch the exception and printStackTrace().

I'm sure there would be cleaner solution than this. But this would work too.