Java非检查方法调用

Java非检查方法调用,java,sqlite,generics,Java,Sqlite,Generics,我正在尝试使用SQLite4java设置一个多线程应用程序,一切都正常。但是,根据入门教程,我打算创建一个类型为“object”的对象,并返回null值(由于使用泛型类型) 以下是建议的代码: queue.execute(new SQLiteJob<Object>() { protected Object job(SQLiteConnection connection) throws SQLiteException { // this method is cal

我正在尝试使用SQLite4java设置一个多线程应用程序,一切都正常。但是,根据入门教程,我打算创建一个类型为“object”的对象,并返回null值(由于使用泛型类型)

以下是建议的代码:

 queue.execute(new SQLiteJob<Object>() {
    protected Object job(SQLiteConnection connection) throws SQLiteException {
      // this method is called from database thread and passed the connection
      connection.exec(...);
      return null;
    }
  });
queue.execute(新的SQLiteJob(){
受保护对象作业(SQLiteConnection连接)引发SQLiteException{
//此方法从数据库线程调用并传递连接
connection.exec(…);
返回null;
}
});

我创建的以下示例代码产生了相同的警告:
警告:

test.java:9: warning: [unchecked] unchecked method invocation: <T,J>execute(J) in com.almworks.sqlite4java.SQLiteQueue is applied to (query<java.lang.Integer>)
       queue.execute(new query<Integer>());    
import com.almworks.sqlite4java.*;  
    import java.util.ArrayList;
    import java.io.File;
    class test{
        
        public static  void main(String[] args){
            File f = new File("file.db");
           SQLiteQueue queue = new SQLiteQueue(f); 
           queue.execute(new query<Integer>());
        }
    
    }
import com.almworks.sqlite4java.SQLiteException;
import com.almworks.sqlite4java.SQLiteJob;
import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteStatement;
import java.util.ArrayList;
class query<T> extends SQLiteJob{


    protected ArrayList<Integer> job(SQLiteConnection connection) throws SQLiteException{

        ArrayList<Integer> ints = new ArrayList<Integer>();
        //DB Stuff
        return ints;
    }
}
test.java:9:警告:[未选中]未选中的方法调用:com.almworks.sqlite4java.SQLiteQueue中的execute(J)应用于(查询)
execute(newquery());
test.java:

test.java:9: warning: [unchecked] unchecked method invocation: <T,J>execute(J) in com.almworks.sqlite4java.SQLiteQueue is applied to (query<java.lang.Integer>)
       queue.execute(new query<Integer>());    
import com.almworks.sqlite4java.*;  
    import java.util.ArrayList;
    import java.io.File;
    class test{
        
        public static  void main(String[] args){
            File f = new File("file.db");
           SQLiteQueue queue = new SQLiteQueue(f); 
           queue.execute(new query<Integer>());
        }
    
    }
import com.almworks.sqlite4java.SQLiteException;
import com.almworks.sqlite4java.SQLiteJob;
import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteStatement;
import java.util.ArrayList;
class query<T> extends SQLiteJob{


    protected ArrayList<Integer> job(SQLiteConnection connection) throws SQLiteException{

        ArrayList<Integer> ints = new ArrayList<Integer>();
        //DB Stuff
        return ints;
    }
}
import com.almworks.sqlite4java.*;
导入java.util.ArrayList;
导入java.io.File;
课堂测试{
公共静态void main(字符串[]args){
文件f=新文件(“File.db”);
SQLiteQueue queue=新SQLiteQueue(f);
execute(newquery());
}
}
query.java:

test.java:9: warning: [unchecked] unchecked method invocation: <T,J>execute(J) in com.almworks.sqlite4java.SQLiteQueue is applied to (query<java.lang.Integer>)
       queue.execute(new query<Integer>());    
import com.almworks.sqlite4java.*;  
    import java.util.ArrayList;
    import java.io.File;
    class test{
        
        public static  void main(String[] args){
            File f = new File("file.db");
           SQLiteQueue queue = new SQLiteQueue(f); 
           queue.execute(new query<Integer>());
        }
    
    }
import com.almworks.sqlite4java.SQLiteException;
import com.almworks.sqlite4java.SQLiteJob;
import com.almworks.sqlite4java.SQLiteConnection;
import com.almworks.sqlite4java.SQLiteStatement;
import java.util.ArrayList;
class query<T> extends SQLiteJob{


    protected ArrayList<Integer> job(SQLiteConnection connection) throws SQLiteException{

        ArrayList<Integer> ints = new ArrayList<Integer>();
        //DB Stuff
        return ints;
    }
}
import com.almworks.sqlite4java.SQLiteException;
导入com.almworks.sqlite4java.SQLiteJob;
导入com.almworks.sqlite4java.SQLiteConnection;
导入com.almworks.sqlite4java.SQLiteStatement;
导入java.util.ArrayList;
类查询扩展了SQLiteJob{
受保护的ArrayList作业(SQLiteConnection连接)引发SQLiteException{
ArrayList ints=新的ArrayList();
//数据库材料
返回整数;
}
}
我读过很多关于当人们无法为ArrayList指定类型时,这条特殊消息是如何显示的。但是,我并没有试图投射该对象或对其执行任何操作。它只是库开发人员为了返回null而实现的一种机制。我不认为这是一个与图书馆直接相关的问题,这就是为什么我在StackOverflow上问这个问题

我相信这一切都归结于我缺乏使用泛型类型的经验。我已经花了几个小时在这上面了,我觉得我没有什么进展


如何停止警告?

问题在于您的
查询
类。您扩展了泛型类,但未指定泛型类型的值

您应该这样做(尽管这没有实际用途……):


问题是您的
查询
类。您扩展了泛型类,但未指定泛型类型的值

您应该这样做(尽管这没有实际用途……):


问题是您的
查询
类。您扩展了泛型类,但未指定泛型类型的值

您应该这样做(尽管这没有实际用途……):


问题是您的
查询
类。您扩展了泛型类,但未指定泛型类型的值

您应该这样做(尽管这没有实际用途……):


张贴完整准确的警告信息。发布引起警告的实际代码,并准确地告诉我们警告所指的代码行。使用@SuppressWarnings('unchecked')我已更新了第一篇文章以反映真实世界的示例不要混淆警告和错误。它们的不同是有原因的。发布完整准确的警告信息。发布引起警告的实际代码,并准确地告诉我们警告所指的代码行。使用@SuppressWarnings('unchecked')我已更新了第一篇文章以反映真实世界的示例不要混淆警告和错误。它们的不同是有原因的。发布完整准确的警告信息。发布引起警告的实际代码,并准确地告诉我们警告所指的代码行。使用@SuppressWarnings('unchecked')我已更新了第一篇文章以反映真实世界的示例不要混淆警告和错误。它们的不同是有原因的。发布完整准确的警告信息。发布引起警告的实际代码,并准确地告诉我们警告所指的代码行。使用@SuppressWarnings('unchecked')我已更新了第一篇文章以反映真实世界的示例不要混淆警告和错误。它们不同是有原因的。太好了,非常感谢。非常好,非常感谢。非常好,非常感谢。非常好,非常感谢。这很有效。