0
我試圖解決Java使用泛型時給出的未經檢查的類型轉換警告。我周圍搜索,我目前正在使用一種解決方法,但它似乎很慢,效率低下。有什麼好方法來解決警告?繞過通用類型轉換警告
我的原代碼:
Message<DataPoint> msg = (Message<DataPoint>) in.readObject();
km.points = msg.payload;
解決方法:
Message<?> msg = null;
Object obj = in.readObject();
if (obj instanceof Message) {
msg = (Message<?>) obj;
if (msg.payload instanceof ArrayList<?>) {
if (msg.payload.size() > 0) {
for (int i = 0; i < msg.payload.size(); i++) {
Object o = msg.payload.get(i);
if (o instanceof DataPoint) {
km.points.add((DataPoint)o);
}
}
}
}
}
如果'in.readObject'只返回'Object',你不能改變的API,但你可以**證明* *它總是包含一個'Message'的實例,那麼就不會有任何問題。警告在那裏,所以你會明白這個*可能不是安全的,但如果你能證明它是,那麼不要太擔心它。 – Makoto 2014-12-05 04:45:19
爲什麼不使用@SuppressWarnings(「unchecked」)? – 2014-12-05 04:46:43