Tôi đang sử dụng một cây đệ quy của hashmaps, cụ thể là bản đồ Hashmap nơi Object là một tham chiếu đến Hashmap khác và vân vân. Điều này sẽ được thông qua xung quanh một thuật toán đệ quy:Java Generics Type Cảnh báo an toàn với đệ quy Hashmap
foo(String filename, Hashmap<String, Object> map)
{
//some stuff here
for (Entry<String, Object> entry : map.entrySet())
{
//type warning that must be suppressed
foo(entry.getKey(), (HashMap<String, Object>)entry.getValue());
}
}
Tôi biết chắc chắn Object
là loại Hashmap<String, Object>
nhưng tôi bị kích thích mà tôi phải ngăn chặn cảnh báo sử dụng @SuppressWarnings("unchecked")
.
Tôi sẽ hài lòng với giải pháp thực hiện hoặc là assert(/*entry.getValue() is of type HashMap<String, Object>*/)
hoặc ném ngoại lệ khi không. Tôi đã đi xuống các tuyến đường Generics cho an toàn loại biên dịch và nếu tôi ngăn chặn các cảnh báo sau đó nó đánh bại mục đích.
Cảm ơn bạn đã bình luận của bạn, KSB
waxwing thân yêu, Tôi đã kết thúc việc thực hiện đề xuất thứ hai của bạn bởi vì nó chỉ ra rằng tôi cần thêm những thứ bổ sung vào "nút" hơn là tham chiếu đến một hashmap khác. Nó cũng cảm thấy tự nhiên hơn nhiều. Tôi chỉ bắt tay với Java, vì vậy không thể hiểu đề xuất đầu tiên của bạn - phần "T mở rộng Bản đồ". Cảm ơn bạn một lần nữa, KSB –