2009-11-05 10 views
5

Ho un'interfaccia che ora è vuota e estende un'altra interfaccia. Mi piacerebbe rimuovere l'interfaccia vuota e utilizzare l'interfaccia di base e sto cercando di trovare il refactoring corretto in IntelliJ.'Rimuovi middleman' IntelliJ refactoring su un'interfaccia vuota

Ho provato "rimuovere middleman" ma ottenuto "Impossibile eseguire il refactoring. Il punto di inserimento deve essere posizionato al nome del campo da refactoring".

risposta

2

Penso che quello che stai cercando sia il refactoring "Type Migration".

+0

Non funziona - Ho ancora l'errore "Il punto di inserimento deve essere posizionato ...". – ripper234

+0

Dove stai applicando il refactoring? Questo refactoring deve essere applicato nella classe della dichiarazione di campo. Quindi se si dispone di: A estende B .... private A myField; è possibile applicare questo refactoring su A solo nella riga di dichiarazione del campo. –

2

Guardando a a blog post explaining the "Remove Middleman" refactoring in IDEA, penserei che semplicemente non si può usare per questo. È solo per "sostituire tutte le chiamate a metodi di delega con le chiamate dirette equivalenti".

(Per un attimo ho pensato un'altra refactoring, "Usa interfaccia Dove possibile", potrebbe essere di aiuto, ma non ho potuto ottenere che il lavoro sia nel mio semplice caso di test.)

5

Penso che ciò che si vuole fare è il refactor "in linea" sull'interfaccia indesiderata, ad es

Se

 
class Thing implements ThingA 

e

 
interface ThingA extends ThingB 

per sbarazzarsi di ThingA

che fate e in linea (Ctrl + alt + n) quando il cursore è su ThingA, si finisce con:

 
class Thing implements ThingB 
0

Il modo migliore per rimuovere usi di un'interfaccia vuota è attraverso "Usa l'interfaccia ove possibile", andare alla definizione dell'interfaccia che si desidera rimuovere e selezionare "Utilizza l'interfaccia, se possibile" dal menu "Refactor". Dovresti quindi ritrovarti con un'interfaccia inutilizzata che puoi tranquillamente eliminare.

Problemi correlati