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