Tengo una clase A<X, Y>
y quiero refactorizarla a A<Y, X>
de modo que todas las referencias a ella se modifiquen también.Cómo invertir los parámetros de tipo en Java
Respuesta
No creo que se ha implementado en Eclipse todavía. Es una refactorización más bien raro, aunque ...
Pero si su jerarquía de tipos por debajo A
no es demasiado complejo, sin embargo, tratar de usar esta expresión regular-buscar-reemplazar (donde A|B|C
significa A
y todos los subtipos de A
, por ejemplo B
y C
):
\b(A|B|C)<\s*(\w+)\s*,\s*(\w+)\s*>
actualización:, ya que desea que coincida con las cosas más sofisticado, prueba este (sin las artificiales saltos de línea):
\b(A|B|C)<
\s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*,
\s*((?:\w+|\?)(?:\s+(?:extends|super)\s+(?:\w+|\?))?)\s*>
sustituir por
$1<$3, $2>
Dado que está utilizando Eclipse, puede comprobar manualmente cada reemplazo para la corrección
Sería bueno incluir también la opción para la palabra clave 'extends' en la búsqueda/reemplazo de expresiones regulares –
¡Verdadero! Actualizaré tu regex loca ;-) –
PD: No me culpes si esto dura 1/2h, aunque ... ;-) –
En Eclipse haga clic derecho en el método, entonces Refactor-> Cambiar la firma método, se puede cambiar el orden de los parámetros allí
El OP pregunta acerca de cómo cambiar los parámetros de tipo de clase genéricos, no los parámetros del método –
Este no es un método, es una declaración de clase. –
Oh, mi error, leí mal la pregunta. En este caso, no creo que Eclipse tenga algo implementado – jasalguero
Si no está utilizando Eclipse (o cualquier otra herramienta que tiene buena refactorización - muy recomendable si no son), entonces puedo pensar en dos formas de hacerlo:
Primero: Si está usando TDD, escriba una prueba que solo tendrá éxito cuando las variables se intercambien correctamente. Luego realice el cambio a la firma del método y asegúrese de que su prueba sea aprobada.
Segundo: 1. Retire el segundo parámetro de la firma del método, que se generan errores de compilación de todas las llamadas a ese método 2. Vaya a cada una de las líneas que se producen errores de compilación, y con cuidado intercambiar las variables de 3 . Ponga la segunda variable nuevamente en la firma del método, en el nuevo orden inverso 4. Ejecute algunas pruebas para asegurarse de que todavía funciona de la manera que espera
El segundo método es obviamente desagradable. Pero si no está utilizando un IDE con un buen soporte de refactorización, los errores de compilación son una buena forma de capturar el 100% de las llamadas a ese método (al menos dentro de su proyecto). Si está escribiendo una biblioteca de códigos utilizada por otras personas o por otros programas, se vuelve mucho más complicado comunicar ese cambio a todas las partes afectadas.
¡Incluso 'vi' conoce expresiones regulares! ;-) –
... pero buenos puntos, de lo contrario –
- 1. Cómo invertir System.loadLibrary en Java
- 2. Nombre de clase de los parámetros de tipo en java?
- 3. Cómo invertir una lista en Java?
- 4. Parámetros de tipo anidado en Java
- 5. Cómo invertir los datos en NSMutableArray?
- 6. aplicación parcial de los parámetros de tipo
- 7. ¿Cómo puedo invertir la caja de una cadena en Java?
- 8. Sincronización de los parámetros formales en java
- 9. Invertir una oración dada en Java
- 10. parámetros de tipo frente a los genéricos
- 11. Transformación XSL en Java con los parámetros
- 12. Comprensión de los genéricos de Java. convenciones de los parámetros de tipo
- 13. ¿No admite IKVM.net los genéricos (parámetros de tipo)?
- 14. ¿Es posible especificar restricciones de límite superior e inferior en los parámetros de tipo en Java?
- 15. Cómo funcionan los tipos de parámetros covariantes en java
- 16. Java Webstart con los parámetros
- 17. Java, 3 puntos en los parámetros
- 18. ¿Por qué no se reifican los parámetros de tipo genérico de Java en tiempo de ejecución?
- 19. Cómo hacer unión, intersección, diferencia e invertir datos en java
- 20. de tipo no Parámetros
- 21. Genéricos C# - Restricciones en los parámetros de tipo
- 22. Java: acceso al constructor privado con parámetros de tipo
- 23. Cómo invertir tuplas en Python?
- 24. Repetición de los parámetros del tipo de Scala
- 25. Contiene(), cómo invertir utilizando lambda
- 26. ¿Por qué Scala no infiere completamente los parámetros de tipo cuando los parámetros de tipo están anidados?
- 27. Cómo evitar los parámetros?
- 28. Invertir CRC32
- 29. Invertir enumerable en Ruby
- 30. Cómo invertir String.fromCharCode?
Disculpe el error tipográfico, sí quiero 'A' –