В Groovy вы можете совершать неожиданные преобразования типов, используя либо оператор as
, либо метод asType
. Примеры включаютПреобразование типа Groovy
Short s = new Integer(6) as Short
List collection = new HashSet().asType(List)
Я удивлен, что я могу конвертировать из Integer к короткому и из набора в список, потому что нет «является» отношения между этими типами, хотя они имеют общий предок.
Например, следующий код эквивалентен Integer/Короткий пример с точки зрения отношений между типами в процессе преобразования
class Parent {}
class Child1 extends Parent {}
class Child2 extends Parent {}
def c = new Child1() as Child2
Но, конечно, этот пример не получается. Что такое правила преобразования типов за оператором as
и метод asType
?