Тип элементов в модели списка
Я определил обычай 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());
}
}
}
1 ответ
Я определил пользовательскую ListModel
Зачем? Вы не добавляете никаких новых функций в модель. Загрузка данных в модель не должна рассматриваться как новая функциональность. Просто создайте метод в своем классе, чтобы загрузить данные в модель. Тогда ваш код будет выглядеть примерно так:
ListModel<String> model = new DefaultListModel<String>();
addDataToModel( model );
Мои вопросы - это то, что
<E>
в первой строке моего кода ниже:
Вы добавляете String
Данные к модели, поэтому вы должны использовать DefaultListModel<String>