2014-08-30 17 views
0

型元件的我已經定義的自定義ListModel作爲內部類的一些其它類保持一些數據。要填充ListModel,我查詢一個數據庫文件並選擇其中的數據,如下面的一段代碼所示。一切都很好地出現在使用 這ListModel一個JList以ListModel

什麼我不明白的是「使用未經檢查或不安全的操作」。當我與-Xlint編譯,我得到警告: 「缺少類型參數泛型類DefaultListModel<E>

我的問題是什麼是<E>在我下面的第一行代碼:

public class SalListModel extends DefaultListModel<E=?>{ 

    String defaultSearch="*"; 
    String salName=defaultSearch; 

    //inner class constructor 
    public SalListModel(){ 

     try{ 

       //connection creates the database if it does not exist 
       Class.forName("org.sqlite.JDBC"); 
       Connection c= 
        DriverManager.getConnection("jdbc:sqlite:"+dbfile); 
       Statement st=c.createStatement(); 

       String sql; 
       sql="select "+salName+" from "+tablename+ 
        " ORDER BY "+name[0]+" ASC;"; //alphabetical order 
       ResultSet rs=st.executeQuery(sql); 

       while (rs.next()){ 
        addElement(rs.getString(name[0])+" "+rs.getString(cnp[0])); 
       } 

       rs.close(); 
       st.close(); 
       c.close(); 
     } 
     catch (ClassNotFoundException cnfe){ 
       System.out.println("SQL SalListModel class not found: "+ 
          cnfe.getMessage()); 
     } 
     catch (SQLException sqle){ 
       System.out.println("SalListModel SQL exception:"+ 
          sqle.getMessage()); 
     } 
    } 
} 
+0

你必須使用泛型類型,在這篇文章中幾乎相同的問題http://stackoverflow.com/questions/15718217/found-raw-type-missing-return-arguments-for-generic-class – snow8261 2014-08-30 16:11:09

+0

答案 我的問題。 – Magicsowon 2014-08-30 16:30:30

回答

3

我已經定義了一個自定義的ListModel

爲什麼?您不會爲模型添加任何新功能。將數據加載到模型中不應被視爲新功能。只需在你的類中創建一個方法來將數據加載到模型中。那麼你的代碼將是這樣的:

ListModel<String> model = new DefaultListModel<String>(); 
addDataToModel(model); 

我的問題是什麼,是在我下面的第一行代碼<E>

你加入String數據模型,所以你應該使用DefaultListModel<String>