Тип элементов в модели списка

Я определил пользовательский 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());
        }
    }
}

person Magicsowon    schedule 30.08.2014    source источник
comment
вам нужно использовать общий тип, почти такой же вопрос в этом сообщении stackoverflow.com/questions/15718217/   -  person snow8261    schedule 30.08.2014
comment
это отвечает на мой вопрос.   -  person Magicsowon    schedule 30.08.2014


Ответы (1)


Я определил пользовательскую ListModel

Почему? Вы не добавляете в модель никаких новых функций. Загрузка данных в модель не должна рассматриваться как новая функциональность. Просто создайте метод в своем классе для загрузки данных в модель. Тогда ваш код будет примерно таким:

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

Мои вопросы: что такое <E> в первой строке моего кода ниже:

Вы добавляете String данные в модель, поэтому вы должны использовать DefaultListModel<String>

person camickr    schedule 30.08.2014