Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 警告:[未选中]未选中的转换_Java - Fatal编程技术网

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中注释该方法时仍然收到一条警告。然而,当我注释整个类时,警告实际上被抑制了。