2011-07-18 9 views

Respuesta

6

Yo no lo creo. No es una tarea tan simple. Su ejemplo es simple, pero considere esto:

class A { 
    private int a; 
    public void foo(){ 
     System.out.println(a); 
    } 
} 

class AA extends A { 
    private int a; //its not the same 'a'!! 
    public void foo(){ //ok, we override, so we can 'overwrite', but... 
     super.foo(); //... what with this? 
     System.out.println(a); 
    } 
} 

Como puede ver, es difícil automatizar. ¿Y qué pasa si alguna clase en esta jerarquía amplía alguna clase de lib, para la que no tiene fuentes? Entonces, la fusión es difícil, y muy, muy mala, por eso no creo que nadie haya escrito esa herramienta.

+0

Acabo de encontrar Refactor-> Empujar hacia abajo/Empujar hacia arriba. – unR

+5

** Refactorizador -> Empujar hacia arriba/Empujar hacia abajo ** mueve los campos y métodos arriba y abajo de la jerarquía de tipos. También actualiza ocurrencias. Pero como dice Adam Jurczyk, lo más probable es que produzca algunos errores. Especialmente cuando los tipos se referencian entre sí o tienen un campo/métodos idénticos (equals(), hashCode(), serialVersionUID) – unR

+1

Lo siento, es malo. Esta es la herramienta que necesita, para casos simples. Para casos como el que he dado, simplemente combina el código y advierte sobre superposiciones. Heh, vives y aprendes: D –

Cuestiones relacionadas