理想情況下,完全使用泛型。您還沒有表現出的map
類型是什麼,但最好你應該能夠寫類似:
Set<String> keys = map.keySet();
SortedSet<String> s = new TreeSet<String>(keys);
這將是的情況下map
是像一個Map<String, Integer>
。
如果map
本身是一個原始類型,那就更難了 - 最好的解決方法是開始在整個代碼庫中添加泛型,擺脫原始類型。當然,如果地圖是從第三方代碼返回的,那並不總是可能的。在這種情況下,當您從原始類型轉換爲泛型類型時(可能通過Collections.checkedCollection
),您可能需要在一行中禁止一條行的警告,但在此之後,您應該能夠正確使用泛型類型。例如:
@SuppressWarnings("unchecked") // Just for this one statement
Collection<String> keys = Collections.checkedCollection(map.keySet(),
String.class);
// Now this statement is fully generic with no warnings
SortedSet<String> s = new TreeSet<String>(keys);
我們需要看到更多的代碼(查看上下文)。我懷疑這是因爲你沒有使用泛型,也沒有使用泛型,但是如果你沒有發佈導致警告的代碼,我們可以做的不過是猜測而已。 – 2011-03-14 07:01:46