Groovy de conversion de type

En Groovy, vous pouvez le faire surprenant conversions de type en utilisant soit le as de l'opérateur ou de la asType méthode. Les exemples incluent

Short s = new Integer(6) as Short
List collection = new HashSet().asType(List)

Je suis surpris de voir que je peux convertir un Entier Court et à partir d'un Ensemble à une Liste, car il n'est pas "est" une relation entre ces types, bien qu'ils partagent un ancêtre commun.

Par exemple, le code suivant est équivalent à l'Entier/Court exemple, en matière de
relation entre les types impliqués dans la conversion

class Parent {}
class Child1 extends Parent {}
class Child2 extends Parent {}

def c = new Child1() as Child2

Mais bien entendu, cet exemple échoue. Quels sont exactement le type de règles de conversion derrière la as de l'opérateur et de la asType méthode?

OriginalL'auteur Dónal | 2009-08-14