Java 如何解决编译器警告问题

Java 如何解决编译器警告问题,java,android,android-room,Java,Android,Android Room,我有一个编译器警告:对上述代码使用未检查或不安全的操作 newinsertalltask(essenceDao).execute(essenceList) 但是我不知道为什么,我试着用-Xlint参数运行,没有更多的信息 代码有效,但警告仍然存在 希望你能帮忙 整个任务: 公共静态类DeleteAllTask扩展了AsyncTask{ 私人决赛精华道精华道; 私人最终名单精华; DeleteAllTask(EssenceDao EssenceDao,列表){ this.essenceDao=e

我有一个编译器警告:对上述代码使用未检查或不安全的操作

newinsertalltask(essenceDao).execute(essenceList)
但是我不知道为什么,我试着用-Xlint参数运行,没有更多的信息

代码有效,但警告仍然存在

希望你能帮忙

整个任务:

公共静态类DeleteAllTask扩展了AsyncTask{
私人决赛精华道精华道;
私人最终名单精华;
DeleteAllTask(EssenceDao EssenceDao,列表){
this.essenceDao=essenceDao;
this.essenceList=列表;
}
@凌驾
受保护的空位背景(空位…空位){
essenceDao.deleteAllEssence();
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
super.onPostExecute(避免);
如果(essenceList!=null){
//插入新列表
新建InsertAllTask(essenceDao).execute(essenceList);
}
}
}
InsertTask:

公共静态类InsertAllTask扩展了AsyncTask{
私人决赛精华道精华道;
插入任务(EssenceDao EssenceDao){
this.essenceDao=essenceDao;
}
@凌驾
@安全变量
受保护的最终虚空背景(列表…精华){
插入(essences[0]);
返回null;
}
}

由于您试图在不修复警告源的情况下抑制警告
(-Xlint)
,因此可以将此注释添加到包含不安全代码的方法中:

    @SuppressWarnings({"unused", "rawtypes"})
例子 上述代码:

    public class TestUnsafe {
      public static void main(String[] args) {
        List myList = new ArrayList();
      }
    }
尝试编译时显示以下警告:

javac TestUnsafe.java-Xlint

    TestUnsafe.java:7: warning: [rawtypes] found raw type: List
        List myList = new ArrayList();
        ^
      missing type arguments for generic class List<E>
      where E is a type-variable:
        E extends Object declared in interface List
    TestUnsafe.java:7: warning: [rawtypes] found raw type: ArrayList
        List myList = new ArrayList();
                          ^
      missing type arguments for generic class ArrayList<E>
      where E is a type-variable:
        E extends Object declared in class ArrayList
    2 warnings
javac TestUnsafe.java-Xlint
返回一个空的编译日志


与我们分享一个最小的可复制示例,以找到正确的注释或修复它

InsertAllTask
是泛型的吗?也许这是离题的,但你能澄清一下吗?使用AsyncTask是你的优势(你必须维护传统,你没有时间进行重构之类的),或者你愿意接受其他将执行切换到后台的方法,但只是不知道它们是什么?你用
@SafeVarargs
标记了
doInBackground
,但你调用的是继承的
execute
方法,它显然没有注释。我不明白你的反应。我不建议删除现有的注释。我说继承的
execute
方法没有它。由于该方法超出了您的职责范围,无法重写,因此您对此无能为力。因为他说,整个类都不赞成,所以Android开发人员甚至不太可能解决这个问题。可能会有一个解决方案。您可以实现
AsyncTask
,而不是实现
AsyncTask
并使用所有参数,例如
doInBackground(Essence…essences){essenceDao.insertEssence(Arrays.asList(essences));返回null;}
。但是,调用方还需要传递一个数组,即
newinsertalltask(essenceDao).execute(essenceList.toArray(new Essential[0])我不想用静默命令抑制警告。我想修改我的代码。但是,感谢您,帮助者请您在github存储库中复制您的警告,以消除此警告:D?
    public class TestUnsafe {
      @SuppressWarnings({"unused", "rawtypes"})
      public static void main(String[] args) {
        List myList = new ArrayList();
      }
    }