在Groovy中,您可以使用as
运算符或asType
方法进行令人惊讶的类型转换。例子包括Groovy类型转换
Short s = new Integer(6) as Short
List collection = new HashSet().asType(List)
我很惊讶,我可以从一个Integer到短而从一组到列表转换,因为没有“是”,这些类型之间的关系,虽然他们有一个共同祖先。
例如,下面的代码等同于整数/短示例中所涉及的转化
class Parent {}
class Child1 extends Parent {}
class Child2 extends Parent {}
def c = new Child1() as Child2
当然,这个例子失败的,但各类型之间的关系 方面。 as
运营商和asType
方法背后的类型转换规则究竟是什么?