Java 警告:[未选中]未选中的转换
我得到以下警告:Java 警告:[未选中]未选中的转换,java,Java,我得到以下警告: warning:[unchecked] unchecked conversion [javac]found:java.util.List [javac] required:java.util.List<edu.fullerton.cs476s09.espressobar.jpa.espressobar_milk> return query.getResultList(); 可能出现的问题和可能的解决方案。 我正在使用以下代码: @Stateless @Remote
warning:[unchecked] unchecked conversion
[javac]found:java.util.List
[javac] required:java.util.List<edu.fullerton.cs476s09.espressobar.jpa.espressobar_milk>
return query.getResultList();
可能出现的问题和可能的解决方案。
我正在使用以下代码:
@Stateless
@Remote(Order.class)
//@EntityListeners(MyListener.class)
public class OrderBean implements Order
{
/**
* The entity manager object, injected by the container
*/
@PersistenceContext
private EntityManager manager;
public List<espressobar_milk> listMilk()
{
Query query = manager.createQuery("SELECT m FROM espressobar_milk m");
return query.getResultList();
}...
.....
..}
提前感谢您的建议。好吧,我们不知道这里有什么查询,但它的getResultList方法可能会返回一个原始列表。基本上,编译器无法确定getResultList返回的列表是否只包含espressobar_milk的实例,这比这稍微微妙一些,但我们暂时不讨论它 您可以尝试使其成为强类型,可能是通过更改查询类,或者使用
@SuppressWarnings("unchecked")
如果您确信它是正确的,但无法实现编译时安全性。可能是
return query.getResultList();
是列表而不是列表@SuppressWarnings ( "unchecked" )
public List<espressobar_milk> listMilk()
{
Query query = manager.createQuery("SELECT m FROM espressobar_milk m");
return query.getResultList();
}
未经检查的转换警告通常由Java的泛型类型擦除机制产生。其思想是,使用泛型的代码可以与不使用泛型的代码协作。事实上,生成的代码省略了泛型类型 但是,当您尝试将泛型附加到非泛型列表时,也会收到此警告,因为这与抛出ClassCastException的基于类的强制转换不同。在本例中,尝试将milk类型附加到getResultList返回的非泛型列表会产生错误 有关这方面的更多信息,请阅读。看起来您正在使用,它目前正在实现JPA 1.0,希望Hibernate在发布时能够实现JPA 2.0。目前是JPA2.0的参考实现。Hibernate没有使用任何Java1.5特性,因此没有通用集合可用
@SuppressWarning ( "unchecked" )
应该是:
@SuppressWarnings("unchecked")
我正在使用EJB3.1,我遇到了同样的问题。我找到了另一个解决方案:
TypedQuery<espressobar_milk> query = manager.createQuery("SELECT m FROM espressobar_milk m", espressobar_milk.class);
return query.getResultList();
这解决了未经检查的对话警告问题,您不再需要@SuppressWarnings注释。注意,我在Java 1.7中注释该方法时仍然收到一条警告。然而,当我注释整个类时,警告实际上被抑制了。