[英]Java unchecked method invocation
我正在嘗試使用SQLite4java設置多線程應用程序,並且一切正常。 但是,根據入門教程,我打算創建一個類型為“對象”的對象,並為了返回空值(由於使用泛型類型)。
這是建議的代碼:
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;
}
});
我創建的以下示例代碼會產生相同的警告:
警告:
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>());
test.java:
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>());
}
}
query.java:
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;
}
}
我已經閱讀了很多有關人們無法為ArrayList指定類型時如何顯示此特定消息的信息。 但是,我沒有嘗試投射對象或對其執行任何操作。 它僅僅是由庫開發人員實現的一種返回空值的機制。 我不認為這是與庫直接相關的問題,這就是為什么我在StackOverflow上問這個問題。
我認為這全都歸因於我對泛型類型缺乏經驗。 我已經花了幾個小時了,覺得自己什么都沒有。
如何停止警告?
問題是您的query
類。 您擴展了通用類,但未指定通用類型的值。
您應該像這樣刪除它(盡管這沒有實際用途...):
class Query<T> extends SQLiteJob<T> {
protected T job(SQLiteConnection connection)
throws SQLiteException{
return ...; // Return something of type T
}
}
或者,如果您希望它專門用於List<Integer>
:
class IntListQuery extends SQLiteJob<List<Integer>> {
protected ArrayList<Integer> job(SQLiteConnection connection)
throws SQLiteException{
List<Integer> list = new ArrayList<>();
// Populate list
return list;
}
}
用法:
SQLiteQueue queue = new SQLiteQueue(f);
queue.execute(new IntListQuery());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.