En Groovy puede hacer conversiones de tipo sorprendente utilizando el operador as
o el método asType
. Los ejemplos incluyenConversión de tipo Groovy
Short s = new Integer(6) as Short
List collection = new HashSet().asType(List)
Me sorprende que pueda convertir de un entero en un corto y de un conjunto a una lista, porque no hay "una" relación entre estos tipos, a pesar de que comparten un común antepasado.
Por ejemplo, el siguiente código es equivalente al ejemplo de enteros/corto en términos de la relación entre los tipos implicados en la conversión
class Parent {}
class Child1 extends Parent {}
class Child2 extends Parent {}
def c = new Child1() as Child2
Pero, por supuesto, este ejemplo no. ¿Cuáles son exactamente las reglas de conversión de tipo detrás del operador as
y el método asType
?