6

If I have a Java project in Eclipse, I can right-click on a method name and "Open Call Hierarchy." Suppose I have two interfaces, A and B, that both specify a method x(). Is it possible for me to have Eclipse use "Open Call Hierarchy" in a more intelligent way so as to only show calls to x() from A's while not showing those from B's?

Michael McGowan
  • 6,528
  • 8
  • 42
  • 70

3 Answers3

6

Eclipse should already do this. If you want to test it, go to your A interface, select the x() method and run 'Open Call Hierarchy' on it. Do the same for your x() method in interface B. You should get different code locations, unless you have a class which implements both, which you should never do. Doing so won't break any compilation or execution, you will just be doubly declaring the same method signature.

Wagan8r
  • 468
  • 5
  • 18
  • Now I'm starting to confuse myself. When I actually tried the dummy example it behaves as you explain, but my real example with more complicated hierarchies *appears* to suffer from the phenomenon that I described. – Michael McGowan Jan 10 '11 at 19:19
3

I have tried this with a frequently-overridden method, toString(). When I right-click on it and choose "Open Call Hierarchy," Eclipse happily searches through my entire workspace and returns all references to that method signature.

I often rely on Eclipse to go the opposite way: I select a method invocation and press F3 to Open Declaration. But I don't think Eclipse is able to go the direction you want, from the declaration to the calling reference.

rajah9
  • 11,645
  • 5
  • 44
  • 57
3

It may help to remove "Potential matches" from the search results. Try this:

Preferences -> General -> Search

And check "Ignore potential matches".

Andrew Eisenberg
  • 28,387
  • 9
  • 92
  • 148