Siehe bug 127442 für Beispiele: je nachdem, was Sie (eine Klasse, ein Verfahren, ...) suchen, kann die Suchmaschine Instanzen finden, die Spiel konnte (aber es nicht mit Sicherheit sagen kann).
Diese Profile sind mit „POTENTIAL_MATCH
“:
Verfahren mit unterschiedlicher Anzahl von Parametern ist keine mögliche Übereinstimmung.
(siehe bug 97322)
Ein potenzielles Spiel ist ein Spiel in dem die Auflösung versagt (beispielsweise das Verfahren Bindung ist null).
Wenn der Benutzer nach "foo(String)
" (ohne qualifizierende String
) sucht, dann sind "foo(java.lang.String)
" und "foo(p.String)
" beide exakte Übereinstimmungen.
Für die .class
Datei Fall, ich denke, wir können nur potenzielle Übereinstimmungen im Fall des fehlenden Typs (siehe bug 196200), d. H. Wenn die .class-Datei kompiliert wurde und einige Typen, die es Referenzen fehlten.
I printIt(String name)
eine public static void Methode hat:
Ein aktuelles Beispiel für schlechtes Benehmen möglicher Übereinstimmung in bug 382778 gefunden.
Wenn ich seine Anrufhierarchie öffne, fehlen einige Anrufer.
Ich rate, die Anrufer fehlen, weil Java-Suche sie als Potenzial anstelle von genauen Übereinstimmungen für die printIt(String)
Referenz markiert.
Der folgende Code ist manchmal als potentielle markiert und manchmal genau:
// Listing 1
PublicInterface2 impl2 = new Impl2("Name Broken");
Static.printIt(impl2.getName());
Wenn das Suchergebnis Potential markiert ist, wird der Anrufer von der printIt()
Aufrufhierarchie fehlt.
PublicInterface2 is an empty public interface which extends PackageInterface2Getters.
PackageInterface2Getters is an empty default-scoped interface which extends PackageInterface1Getters.
PackageInterface1Getters is a default-scoped interface which declares String getName().
So gibt impl2.getName()
über ein String
.
Es gibt einige Probleme berichtet, die ich machen denke, die Spiele als mögliche markiert werden:
...
Filename : \D:\workspace\eclipse\_runtimes\jdt\call-hierarchy-bug\src\main\PublicInterface2.java
COMPILED type(s)
2 PROBLEM(s) detected
- Pb(2) PackageInterface1Getters cannot be resolved to a type
- Pb(327) The hierarchy of the type PublicInterface2 is inconsistent
Es stellte sich heraus, dass:
Der Compiler die „NameEnvironment
“, fragt die Art zu erhalten Informationen eines abhängigen Typs.
Die Suche hat eigene NameEnvironment
Implementierung in JavaSearchNameEnvironment
und es sucht nicht nach sekundären Typen.
Das ist schlecht und es ist überraschend, dass wir bis jetzt nicht auf dieses Problem gestoßen sind.
Ich war dabei [zeige auf das Handbuch] (http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-search.htm) aber das sagt nur "Wählen Sie diese Option, wenn Sie nur exakte Übereinstimmungen sehen möchten." was nicht gerade hilfreich ist ;-) –
Diese einzige Option ist seit Jahren ein Mysterium für mich! Ich habe bereits viele Male mit Google, der integrierten Hilfe (die, glaube ich, ist das gleiche wie http://help.eclipse.org), gesucht und nie etwas entfernt nützlich gefunden. – parvus
Nur ein Beispiel für eine problematische "potentielle Übereinstimmung" hinzugefügt, sowie ein Verweis auf einen Fehlerbericht, der erklärt, warum eine andere Parameternummer kein Kriterium für "potentielle Übereinstimmung" ist. – VonC