2011-01-10 8 views
6

Wenn ich ein Java-Projekt in Eclipse habe, kann ich mit der rechten Maustaste auf einen Methodennamen und "Aufrufhierarchie öffnen" klicken. Angenommen, ich habe zwei Schnittstellen, A und B, die beide eine Methode x() angeben. Ist es für mich möglich, dass Eclipse "Offene Rufhierarchie" intelligenter verwendet, um nur Aufrufe von x() von A anzuzeigen, während die von B nicht angezeigt werden?Mehr Intelligent Eclipse "Offene Rufhierarchie"?

Antwort

6

Eclipse sollte dies bereits tun. Wenn Sie es testen möchten, gehen Sie zu Ihrer A Schnittstelle, wählen Sie die x() Methode und führen Sie 'Open Call Hierarchy' darauf. Machen Sie das gleiche für Ihre x() Methode in der Schnittstelle B. Sie sollten verschiedene Code-Speicherorte erhalten, es sei denn, Sie haben eine Klasse, die beides implementiert, was Sie niemals tun sollten. Wenn Sie dies nicht tun, wird die Kompilierung oder Ausführung nicht abgebrochen. Sie deklarieren einfach die gleiche Methodensignatur.

+0

Jetzt beginne ich mich zu verwirren. Wenn ich das Dummy-Beispiel tatsächlich ausprobiert habe, verhält es sich so, wie du es erklärst, aber mein wirkliches Beispiel mit komplizierteren Hierarchien * scheint unter dem Phänomen zu leiden, das ich beschrieben habe. –

3

Ich habe dies mit einer häufig überschriebenen Methode versucht, toString(). Wenn ich mit der rechten Maustaste darauf klicke und "Aufrufhierarchie öffnen" auswähle, durchsucht Eclipse glücklich meinen gesamten Arbeitsbereich und gibt alle Verweise auf diese Methodensignatur zurück.

Ich verlasse mich oft auf Eclipse, um den umgekehrten Weg zu gehen: Ich wähle einen Methodenaufruf und drücke F3 um Open Declaration zu öffnen. Aber ich glaube nicht, dass Eclipse in der Lage ist, die gewünschte Richtung zu wählen, von der Deklaration bis zur aufrufenden Referenz.

2

Es kann helfen, "potenzielle Treffer" aus den Suchergebnissen zu entfernen. Versuchen Sie folgendes:

Preferences -> General -> Search

und überprüfen Sie "Ignorieren mögliche Übereinstimmungen".