Trong Groovy bạn có thể thực hiện các chuyển đổi kiểu đáng ngạc nhiên bằng cách sử dụng toán tử as
hoặc phương pháp asType
. Ví dụ nhưChuyển đổi loại Groovy
Short s = new Integer(6) as Short
List collection = new HashSet().asType(List)
Tôi ngạc nhiên mà tôi có thể chuyển đổi từ một Integer đến một ngắn và từ một Set vào một danh sách, vì không có "là một" mối quan hệ giữa các loại, mặc dù họ làm chung một chung tổ tiên.
Ví dụ, đoạn mã sau là tương đương với Integer/example ngắn về mối quan hệ giữa các loại tham gia vào việc chuyển đổi
class Parent {}
class Child1 extends Parent {}
class Child2 extends Parent {}
def c = new Child1() as Child2
Nhưng tất nhiên ví dụ này thất bại. Chính xác các quy tắc chuyển đổi loại nào sau toán tử as
và phương pháp asType
?