Sau đây Groovy đang in "nó hoạt động"Generics trong Groovy
def printIt(Class<? extends Exception> clazz) {
println "it works"
}
printIt(String.class)
mặc dù thông số không đáp ứng các hạn chế Class<? extends Exception>
hiểu biết của tôi là điều này là bởi vì:
- Loại xóa trong Generics Java có nghĩa là không có kiểu generic chung nào kiểm tra
- Không có kiểm tra kiểu thời gian biên dịch trong Groovy
Hai điểm này có nghĩa là không kiểm tra hiệu quả các loại generic bị chặn trong Groovy. Có cách nào tôi có thể kiểm tra (khi chạy) mà đối tượng Class
truyền cho printIt
đáp ứng các hạn chế ? extends Exception
Cảm ơn, Don
Tôi tự hỏi chính xác những gì có nghĩa là: 'Groovy hiện đang tiến xa hơn một chút và ném đi thông tin generics "ở cấp nguồn"' –
Tôi nghĩ điều này có nghĩa là thông tin chung được bỏ qua trong groovy. Trong Java, thông tin generics được loại bỏ nhưng các phôi thích hợp và kiểm tra kiểu tĩnh được thực hiện. –