A a = new A();
ArrayList<A> myA = (ArrayList<A>)request.getAttribute("message");
错误消息:
类型安全性:未选中的从
Object
到ArrayList<A>
的强制转换
属性"message“是在ArrayList<A>
中从另一个jsp页面发送的。
发布于 2020-11-18 02:22:15
如果你想取消这一警告,我会做以下几件事:
List<A> castToArrayList() {
Object obj = request.getAttribute("message");
return ((List<?>) obj).stream().map(el -> (A) el).collect(Collectors.toList());
or
return ((List<?>)obj)
.stream()
.filter(A.class::isInstance)
.map(A.class::cast)
.collect(Collectors.toList());
}
发布于 2017-01-21 02:44:24
如果你觉得麻烦的话,只要加个注释就行了。
@SuppressWarning ("unchecked")
List<A> myA = (ArrayList< A >)request.getAttribute("message");
将对象转换为某种泛型类型是不安全的,它可能导致ClassCastException
。您可以将其放入“尝试”中,并在输入无效时处理您的响应。
无法确定List
是否真正应该具有泛型参数<A>
。您必须事先知道参数应该是什么(否则当您得到一个ClassCastException
时会发现)。这就是为什么代码会生成警告,因为编译器不可能知道是否安全。
https://stackoverflow.com/questions/41778276
复制相似问题