2014-08-30 3 views
0

사용자 정의 ListModel을 일부 데이터를 보유하는 다른 클래스의 내부 클래스로 정의했습니다. ListModel을 채우기 위해 데이터베이스 파일을 쿼리하고 그 안에있는 데이터를 선택합니다 (아래 코드 부분 참조). 모든 것은 ListModel을 사용하여 JList에 멋지게 나타납니다.listmodel의 요소 유형

내가 이해하지 못하는 것은 "검사되지 않거나 안전하지 않은 작업 사용"입니다. 내가 -Xlint 컴파일 할 때, 내가 경고를 얻을 :

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

+0

답변 내 질문. – Magicsowon

답변

3

: "제네릭 클래스 DefaultListModel<E>에 대한 누락 된 형식 인수"

내 질문은 아래에있는 내 코드의 첫 번째 줄에 <E> 무엇이다 사용자 정의 ListModel을 정의했습니다.

왜? 모델에 새로운 기능을 추가하지 않습니다. 데이터를 모델에로드하는 것이 새로운 기능으로 간주되어서는 안됩니다. 클래스에 메서드를 만들어 데이터를 모델에로드하면됩니다. 같은 그런 다음 코드를 볼 수있는 작품 :

당신이해야한다, 그래서 당신은 모델에 String 데이터를 추가 :

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

내 질문은 아래에있는 내 코드의 첫 번째 줄에 <E> 무엇이다 DefaultListModel<String>