2012-03-28 6 views
12
abstract class Base {} 

class A extends Base 
class B extends Base 

¿Cómo puedo encontrar todos los lugares en el código que crean Base? (es decir, tener una nueva A() o una nueva B())intellij idea: cómo encontrar todas las creaciones de instancia de una clase

ACTUALIZACIÓN: para dejar en claro, lo anterior es justo y ejemplo. Estoy interesado en una forma de buscar la creación de objetos de cualquier clase, incluidas las clases de terceros que no controlo.

Respuesta

15

Uso de la búsqueda Estructural (Editar -> Buscar -> Buscar Estructuralmente o Ctrl + Shift + S):

  • crear una plantilla: new $Type$($P$)
  • Editar tipo de variable: Tipo bajo en el campo de texto, marque 'Aplicar restricción dentro de la jerarquía de tipos', marque 'Esta variable es el objetivo de la búsqueda'
  • Editar la variable P: escriba. * en el campo de texto, configure Conteo mínimo en 0, marque Ilimitado en Número máximo .

Voila!

+1

Para personas del futuro: Structural Search solo funciona en la edición Ultimate de IntelliJ. – Vic

+1

Esto también funciona en Community Edition a partir del 14 EAP (compilación IC-138.2210.3. No sé si se sacará en la edición Ultimate para 14). – yshavit

0

Puede crear el constructor predeterminado vacío de Base y presionar Ctrl + Alt + H (llamadas jerárquicas). Entonces verás todas las creaciones de A y B como un árbol.

+0

Por favor, mira mi actualización – IttayD

4

IttayD si he entendido bien su última actualización, lo que normalmente hago (IntelliJ 9.0.4) si tengo una necesidad similar a la suya es clic derecho sobre el nombre de la clase y no "Buscar" Usos y esta lista voluntad los resultados en forma de categorías de uso,

  • Declaración de variables
  • creación nueva instancia, para nombrar unos pocos.

Por lo que yo sé, no creo que haya una opción específica/opción de selección para completar dicha verificación de búsqueda de uso. Gracias

enter image description here

+1

Find Usages returns only creación de instancias de esa clase, no de subclases de esta clase (o rasgo) – IttayD

+0

@IttayD bajo find Usages subclase instanciado de la clase 'abstract' debe aparecer bajo 'variable local declaración 'por ej. Lo intenté y enumeró todos los instantes inicializados de subclases. Tal vez puedas pegar algunos p. Ej. código que tiene que no aparece en la sección encontrar usos. Gracias – MalsR

Cuestiones relacionadas