警告:[未选中]未经检查的转换

9 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();
Run Code Online (Sandbox Code Playgroud)

可能是什么问题和可能的解决方案.我使用以下代码:

@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();
    }...
.....
..}
Run Code Online (Sandbox Code Playgroud)

提前感谢任何建议.

Jon*_*eet 11

好吧,我们没有Query这里的详细信息,但可能它的getResultList方法返回原始List.基本上编译器不能确定返回的列表getResultList只包含实例espressobar_milk(它稍微比它更微妙,但我们暂时将它保留在那里).

您可以尝试强制键入,可能是通过更改Query类,或者您可以使用注释方法

@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)

如果你确信这是正确的,但没有办法实现编译时的安全性.


小智 10

我使用EJB 3.1,我遇到了同样的问题.我找到了另一个解决方

TypedQuery<espressobar_milk> query = manager.createQuery("SELECT m FROM espressobar_milk m", espressobar_milk.class);         
return query.getResultList(); 
Run Code Online (Sandbox Code Playgroud)

这解决了未经检查的对话警告(您不再需要@SuppressWarnings注释).