2017-08-19 6 views
1

En utilisant la recherche structurelle dans Intellij IDEA, comment le modèle de recherche devrait-il être si je veux trouver toutes les classes qui implémentent une interface sans étendre une autre classe ? Les modèles sont séparément:Dans Intellij IDEA, recherchez des classes qui implémentent une interface sans étendre une autre classe

class $Class$ implements $Interface$ {} 

et

class $Class$ extends $Parent$ {} 

réglage 1,1 et 0,0 respectivement minimale et maximale.

J'ai essayé quelque chose de similaire à cette question sans succès:

IntelliJ Structural Search to find classes that implement A but not B

Répondre

1

Vous pouvez combiner les deux modèles:

class $Class$ extends $Parent$ implements $Interface$ {} 

Avec les paramètres variables suivantes

$Parent$:
Texte/expression rationnelle Excluded et activer Apply constrains in type hierarchy, min/max 0,0
$Interface$:
Texte/regexp Included et activer Apply constrains in type hierarchy, min/max 1,1

Quand je recherche avec ces paramètres sur le code de test suivant, les classes B et E se trouvent.

class Excluded {} 
interface Included {} 
class A extends Excluded implements Included {} 
class B implements Included {} 
class C extends Excluded {} 
class D extends A {} 
class E extends B {} 
class F {} 

Vous devez bien sûr utiliser votre propre nom de classe et d'interface au lieu de Inclus et Exclus.

+0

Cela ne fonctionne pas, même lorsque vous attribuez respectivement les valeurs min et max à 1,1 et 0,0 dans votre extrait de code. – gibarsin

+0

J'ai ajouté quelques explications supplémentaires. Si cela ne fonctionne pas pour vous, quelle version d'IntelliJ IDEA utilisez-vous? Peut-être que vous avez un bug. –