Trong khi sử dụng Spring ApplicationContext và phương thức của nó getBeansOfType
Tôi đã gặp sự cố với các kiểu chung. Điều này chứng minh sự cố:Cách chuyển đổi từ Danh sách <SomeParamType> thành Danh sách <SomeParamType <?>>
class Test
{
List<Generator<?>> allGenerators =
new ArrayList(getBeansOfType(Generator.class).values()); // Raw type warning
// for new ArrayList()
<T> Map<String, T> getBeansOfType(Class<T> klass) {
return emptyMap();
}
}
interface Generator<R> {}
Tôi truy xuất tất cả các loại hạt được tham số hóa từ vùng chứa. Tôi muốn có chúng dưới dạng Generator<?>
và sử dụng logic tùy chỉnh để truyền an toàn đến thông số loại thích hợp dựa trên thuộc tính trên mỗi phiên bản Generator
.
Vấn đề của tôi là tôi không thể tìm bất kỳ cách nào để gán cho allGenerators
mà không có cảnh báo an toàn loại, mặc dù ở mức khái niệm, tôi không cam kết với bất kỳ thông số loại không được kiểm tra nào. Tôi chỉ muốn chuyển đổi một loại thô thành một loại ký tự đại diện.
Có thành ngữ nào không yêu cầu @SuppressWarnings
để đến đó không?
Nhưng điều đó rõ ràng đưa ra cảnh báo "kiểu thô" trên 'Trình tạo g'. Bạn có thể tắt cảnh báo đó trong Eclipse, nhưng đó không phải là những gì tôi đang hướng đến. –
@MarkoTopolnik có vẻ như ok nếu tôi sử dụng 'Máy phát điện >' làm loại 'g' (ít nhất, mã biên dịch và tôi không nhận được bất kỳ cảnh báo nào) – Raffaele
Bạn phải bật -Xlint: bỏ chọn trong cài đặt trình biên dịch trong IntelliJ để xem cảnh báo hoặc biên dịch theo cách thủ công với cài đặt này được bật. –