类型不匹配:无法从元素类型Object转换为String

时间:2014-07-16 17:00:41

标签: java

我有一个下拉列表,我想通过数据库填写 我显示代码

private String maValeur; 
private List<SelectItem> mesElements;

            public String getMaValeur() {
                return maValeur;
            }
            public void setMaValeur(String maValeur) {
                this.maValeur = maValeur;
            }
            public List getMaliste()
            {
                ArrayList<String> unelist = new ArrayList();

                try { 
                    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
                     String serverName = "localhost";
                        String mydatabase = "gestionticket";
                        String url = "jdbc:mysql://" + serverName +":3306"+ "/"+ mydatabase; // a JDBC url
                         String user = "root";
                         String pass = "";


                     java.sql.Connection connection = DriverManager.getConnection(url, user, pass);
                             Statement instruction = (Statement) ((java.sql.Connection) connection).createStatement();



                             String sql = "select * from gestionticket.client" ;    
                                ResultSet resultat  = (ResultSet) instruction.executeQuery(sql);

                                while(resultat.next()){
                                    String nom=resultat.getString("nom").toString();
                                    unelist.add(nom);

                                }
                    //session.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }

                return (List) unelist;
            }
            public List<SelectItem> getMesElements() {
                 if (mesElements == null) {
                     mesElements = new ArrayList<SelectItem>();
                     for (String val : getMaliste()) {
                         mesElements.add(new SelectItem(val));
                     }
                 }
                return mesElements;
            }

错误消息msg出现在行级

for (String val : getMaliste() {
                   mesElements.add(new SelectItem(val));
               }

这是msg错误:

  

类型不匹配:无法从元素类型Object转换为String

如果您对此编译错误有任何疑问;帮助我

2 个答案:

答案 0 :(得分:2)

您的方法在签名中有raw type

public List getMaliste()

应该是

public List<String> getMaliste()

并且不要在返回时转换为raw类型,

return unelist;

答案 1 :(得分:1)

错误: - 类型不匹配:无法从元素类型Object转换为String。 每当您尝试将Object类型转换为String类型时,您将始终收到此错误,因为Object类型在类层次结构上更高,即Object表示String类型的超类(最终是Java中的所有其他类)。

此错误的解决方案:

每当你有任何返回任何Object类型的方法但你需要将其存储为s String类型时,则在该Object上追加toString()方法。 例如:

public class ObjectToString {
    public List<String> getName() {
        List<String> list=new ArrayList<String>();
        list.add("Andrew Smith");
        list.add("Jen Hawkins");
        return list;
    }

    public static void main(String[] args){
        ObjectToString ots=new ObjectToString();
        String names=ots.getName().toString();
        System.out.println(names);
    }
}

这里getName()方法的返回类型是List类型,你将它的内容分配给main()中的String类型变量,除非你在getName()上使用toString()方法,否则这是不可能的。