Bất cứ ai có thể giải thích tại sao đoạn mã sau đây biên dịch?Bối rối bởi các generics trong Java
List<Long> longNums = new ArrayList(Arrays.asList("one", "two", "three"));
Có phải do loại tẩy xoá không?
Nếu tôi có các phương pháp sau đây:
public <T> T readProperty(String propName, Class<T> type);
Làm thế nào tôi có thể chắc chắn rằng nó sẽ trở lại, nói một List<Long>
và không phải là một List<String>
? Rõ ràng, ở kiểu gọi phương thức tôi chỉ có thể cung cấp List.class
và cầu nguyện.
//run and pray
List<Long> longNums = readProperty("prop", List.class);
Nó đã xảy ra với tôi rằng một phương pháp như vậy không đúng chỉ định một danh sách các đối tượng String để một danh sách các số dài, và nó không phải là cho đến khi tôi chạy nó, mà tôi thấy ClassCastException
.
Đơn giản chỉ cần - không pha trộn Generics với RAWS. –
Tại sao bạn muốn lưu trữ chuỗi ký tự trong danh sách 'Long'? –
không phải là một chuỗi ký tự, mà là một danh sách các chuỗi. Có lẽ tôi nên diễn giải – preslavrachev