2009-11-05 6 views
5

J'ai une interface qui est maintenant vide, et étend une autre interface. Je voudrais supprimer l'interface vide et utiliser l'interface de base, et j'essaie de trouver le refactoring correct dans IntelliJ.'Supprimer l'intermédiaire' refonte de l'IntelliJ sur une interface vide

J'ai essayé "supprimer l'intermédiaire" mais j'ai obtenu "ne peut pas effectuer le refactoring Le curseur doit être positionné au nom du champ à refactoriser".

Répondre

2

Je pense que ce que vous cherchez est le refactoring "Type Migration".

+0

Ne fonctionne pas - Je reçois toujours l'erreur "Le caret devrait être positionné ...". – ripper234

+0

Où appliquez-vous le refactor? Ce refactor doit être appliqué dans la classe de la déclaration de champ. Donc si vous avez: A étend B .... privé A myField; vous ne pouvez appliquer ce refactoring sur A dans la ligne de déclaration de champ. –

2

En regardant a blog post explaining the "Remove Middleman" refactoring dans IDEA, je pense que vous ne pouvez tout simplement pas l'utiliser pour cela. C'est juste pour "remplacer tous les appels à la délégation de méthodes avec les appels directs équivalents".

(Pour un moment, je pensais une autre refactoring, « Utiliser l'interface si possible », pourrait être utile, mais je ne pouvais pas que le travail soit dans mon exemple simple de test.)

5

Je pense que ce que vous voulez faire est le refactor "inline" sur l'interface indésirable, par exemple

Si

 
class Thing implements ThingA 

et

 
interface ThingA extends ThingB 

Pour se débarrasser de ThingA

que vous faites et en ligne (ctrl + alt + n) lorsque le caret est au ThingA, vous vous retrouvez avec:

 
class Thing implements ThingB 
0

La meilleure façon d'éliminer les utilisations d'une interface vide est par « Utiliser l'interface lorsque cela est possible », passez à la définition de l'interface que vous souhaitez supprimer et sélectionnez « interface Utiliser si possible » dans le menu "Refactor". Vous devriez alors vous retrouver avec une interface inutilisée que vous pouvez supprimer en toute sécurité.