Tôi có enum thực hiện MyInterface. Trong khi tạo lớp khác bằng cách sử dụng enum đó, tôi muốn hạn chế enumClz là lớp đã triển khai MyInterface.Loại chung chung cho loại enum để thực hiện một số giao diện
Vì vậy, tôi mô tả chữ ký là "T extends Enum< T extends MyInterface>
" tại khai báo loại chung.
public <T extends Enum< T extends MyInterface>> C1(Class<T> enumClz) {
for (T anEnumConst : enumClz.getEnumConstants()) {
//....process
}
}
Điều làm tôi ngạc nhiên là IDE nói "bị ràng buộc bất ngờ" tại "T extends MyInterface
". Tôi không biết điều đó có nghĩa là gì bởi thông báo lỗi hai từ như vậy, Bất kỳ giải pháp nào về điều này?
Và bằng cách này, ngoài tò mò, tôi có một câu hỏi kỳ lạ mặc dù không thực sự quan trọng. Có thể là loại enum T tương đương với vòng lặp vô hạn sau đây
<T extends Enum< T extends Enum<T extends<....>>>>
?
@alfasin 'extends' khi được sử dụng trong giới hạn chung có nghĩa là "là, hoặc kéo dài, hoặc dụng cụ". –