Ver bug 127442 de ejemplos: en función de lo que está buscando (una clase, un método, ...), el motor de búsqueda puede encontrar ejemplos que podrían partido (pero no puedo decir con certeza).
Esos casos están marcados "POTENTIAL_MATCH
":
Un método con diferente número de parámetros no es una coincidencia potencial.
(ver bug 97322)
Un partido potencial es un partido en el que la resolución no (unión, por ejemplo, el método es null).
Si el usuario busca "foo(String)
" (sin calificar String
), entonces "foo(java.lang.String)
" y "foo(p.String)
" son coincidencias exactas.
Para el caso del archivo .class
, creo que solo podemos tener posibles coincidencias en el caso del tipo de letra faltante (consulte bug 196200), es decir, si el archivo .class se compiló y faltan algunos tipos de referencias.
Un ejemplo actual de los posibles comportamientos indebidos partido se encuentra en bug 382778:
que tienen un método public static void printIt(String name)
.
Cuando abro la jerarquía de llamadas, faltan algunas personas.
Supongo que las personas que llaman están desaparecidas porque la búsqueda java las marca como potenciales en lugar de coincidencias exactas para la referencia printIt(String)
.
El código siguiente es veces marcados como potencial y veces exacta:
// Listing 1
PublicInterface2 impl2 = new Impl2("Name Broken");
Static.printIt(impl2.getName());
Cuando el resultado de la búsqueda está marcado potencial, la persona que llama no se encuentra en la jerarquía printIt()
llamada.
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().
Así impl2.getName()
anterior devuelve un String
.
hay algunos problemas reportados que supongo que los partidos se marque como potencial:
...
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
Resulta que:
El compilador le pide al "NameEnvironment
" para obtener el tipo información de cualquier tipo dependiente.
La búsqueda tiene su propia implementación NameEnvironment
en JavaSearchNameEnvironment
y no está buscando tipos secundarios.
Esto es malo y es sorprendente que no nos hayamos encontrado con este problema hasta ahora.
Estaba a punto de [señalar el manual] (http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-search.htm) pero solo dice "Seleccione esta opción si solo quiere ver coincidencias exactas". que no es exactamente útil ;-) –
¡Esa única opción ha sido un misterio para mí durante años! Ya busqué muchas veces usando google, la ayuda integrada (que, creo, es la misma que http://help.eclipse.org), y nunca encontré nada remotamente útil. – parvus
Acabo de agregar un ejemplo de "coincidencia potencial" problemática, así como una referencia a un informe de error que explica por qué el número de parámetro diferente no es un criterio para "coincidencia potencial". – VonC