¿Cómo puedo refactorizar (mover) un método Java en clase A en clase B y tener todas las referencias al método para actualizarlo?Eclipse, refactorizando un método java en otra clase
¿Es compatible con Eclipse?
¿Cómo puedo refactorizar (mover) un método Java en clase A en clase B y tener todas las referencias al método para actualizarlo?Eclipse, refactorizando un método java en otra clase
¿Es compatible con Eclipse?
Para un método estático, puede hacer clic con el botón derecho y seleccionar 'Mover'.
Obj1.myMethod()
sería entonces obtener 'movido' a
Obj2.myMethod()
y Eclipse fijaría sus importaciones etc.
Para un método no estático, esto puede no funcionar dependiendo de la relación entre classA y clase B.
Obj1 myobj1 = new Obj1();
myobj1.myMethod();
myobj1.myOtherMethod();
Si mueve myMethod() a una clase diferente, la refactorización habría que cambiar la inicialización de objetos. Si myOtherMethod no se mueve, entonces no puede simplemente cambiar el tipo de myobj1 a Obj2 porque entonces myOtherMethod no funcionará.
Gracias por explicarlo, lo entiendo ahora. Para mover un método no estático, debes incluirlo para que exista en los parámetros del método que creo. "El objetivo debe ser, por lo tanto, la clase de declaración de un parámetro o tipo de campo" ... No estoy seguro de qué significa "o" tipo de campo ". ¿Tú sabes? Aquí también hay un buen enlace: http://www.eclipse.org/articles/article.php?file=Article-Unleashing-the-Power-of-Refactoring/index.html – momomo
Un campo es una variable miembro de una clase . En 'Person.name', Person es la clase, name es el campo. – Thomas
Si desea mover el método a una nueva clase - Refactor> Extracto de Clase
Esto no funciona para todos los métodos. – momomo
'Extract Class' insiste en extraer algunas variables miembro a la nueva clase Esto es molesto si quieres mover el método porque no depende de ningún estado de instancia. – poolie
Los asistentes 'Move' y' Extract Class' son torpes - Estoy usando 'Luna 4.4.2'. La forma en que Conseguí que funcionara: Creé manualmente la nueva clase y luego usé el asistente para mover los métodos. Solo se mueve uno a la vez. yo, pero está bien porque refactoriza todas las llamadas a esos métodos. – cbaldan
Bueno, no creo que, al menos en mi caso, las referencias no se actualizaron :( – NINCOMPOOP
No estoy seguro de que vea cómo se pueden actualizar las referencias. Su método sería llamado por instancias de la clase A en algún lugar del código. Actualizar las referencias en este caso implicaría que todas las instancias de classA se convierten en instancias de clase B que pueden tener muchos otros efectos secundarios. –