Vedi bug 127442 per gli esempi: a seconda di cosa si sta cercando (una classe, un metodo, ...), il motore di ricerca può trovare esempi che potrebbero partita (ma non può dire per certo).
Quei casi sono contrassegnati "POTENTIAL_MATCH
":
Metodo con diverso numero di parametri non è un potenziale partita.
(vedi bug 97322)
Un potenziale partita è una partita dove la risoluzione non (ad esempio il metodo di rilegatura è nullo).
Se l'utente cerca "foo(String)
" (senza qualificazione String
), quindi "foo(java.lang.String)
" e "foo(p.String)
" sono entrambe le corrispondenze esatte.
Per il caso .class
di file, penso che possiamo avere solo possibili corrispondenze nel caso del caso tipo mancante (vedi bug 196200), cioè se il file .class è stato compilato e alcuni tipi IT riferimenti mancavano.
Un esempio attuale di potenziale partita comportamento scorretto si trova in bug 382778:
Ho un metodo public static void printIt(String name)
.
Quando apro la sua gerarchia di chiamata, mancano alcuni chiamanti.
Suppongo che i chiamanti manchino perché la ricerca java li contrassegna come potenziali anziché corrispondenze esatte per il riferimento printIt(String)
.
Il seguente codice è volte contrassegnati come potenziale, e volte esatto:
// Listing 1
PublicInterface2 impl2 = new Impl2("Name Broken");
Static.printIt(impl2.getName());
Quando il risultato della ricerca è segnato potenziale, il chiamante è presente nella gerarchia di printIt()
chiamata.
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().
Così impl2.getName()
sopra restituisce un String
.
ci sono alcuni problemi segnalati che immagino rendere le partite essere contrassegnato come potenziale:
...
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
scopre che:
Il compilatore chiede alla "NameEnvironment
" per ottenere il tipo informazioni di qualsiasi tipo dipendente.
La ricerca ha la propria implementazione NameEnvironment
in JavaSearchNameEnvironment
e non è in cerca di tipi secondari.
Questo è male ed è sorprendente che non abbiamo eseguito in questo problema fino ad ora.
Stavo per [indicare il manuale] (http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-search.htm) ma dice solo "Seleziona questa opzione se vuoi vedere solo le corrispondenze esatte". che non è esattamente utile ;-) –
Quella singola opzione è stata un mistero per me da anni! Ho già cercato molte volte utilizzando google, la guida integrata (che, credo, è la stessa di http://help.eclipse.org), e non ho mai trovato nulla di utile in remoto. – parvus
È stato appena aggiunto un esempio di "potenziale corrispondenza" problematica, nonché un riferimento a una segnalazione di bug che spiega perché il diverso numero di parametro non è un criterio per "corrispondenza potenziale". – VonC