Java,错误没有为add()找到合适的方法

时间:2016-11-15 08:03:00

标签: java

我需要一个java问题的帮助,当我编译它时出现错误,我已经看过其他帖子,如果能帮助我就无法解决我会非常感激。

import javax.swing.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;

public class Sugestao{
   private int idSugestao;
   private String sugestao;
   private ArrayList<JTextArea> guardaSugestao;

   public Sugestao(){
      guardaSugestao = new ArrayList<>();
   }
   public Sugestao(int idSugestao){
      this.idSugestao = idSugestao;
      guardaSugestao = new ArrayList<>();
   }
   public Sugestao(int idSugestao, String sugestao){
      this.idSugestao = idSugestao;
      this.sugestao = sugestao;
      guardaSugestao = new ArrayList<>();
   }
   public int getIdSugestao(){
      return idSugestao;
   }
   public String getSugestao(){
      return sugestao;
   }
   public ArrayList<JTextArea> guardaSugestao(){
      return guardaSugestao;
   }
   public void setIdSugestao(int idSugestao){
      this.idSugestao = idSugestao;
   }
   public void setSugestao(String sugestao){
      this.sugestao = sugestao;
   }
   public void setGuardaSugestao(ArrayList<JTextArea> guardaSugestao){
      this.guardaSugestao = guardaSugestao;
   }

   public void adicionarSugestao(JTextArea jTextArea){
      guardaSugestao.add(jTextArea);
   }

   public ArrayList<JTextArea> carregaSugestao(Connection conn){
      String sqlSelect = "select id, sugestao from tabelaTeste where id_sugestao = ?";
      ArrayList<JTextArea> listaSugestao = new ArrayList<>();

      try(PreparedStatement stm = conn.prepareStatement(sqlSelect);){
         stm.setInt(1, getIdSugestao());
         try(ResultSet rs = stm.executeQuery();){
            while(rs.next()){
               Sugestao s = new Sugestao();
               s.setIdSugestao(rs.getInt("id_sugestao"));
               s.setSugestao(rs.getString("sugestao")); 
               listaSugestao.add(s); // error
            }
         }
         catch(Exception e){
            e.printStackTrace();
         }
         catch(SQLException e1){
            System.out.print(e1.getStackTrace());
         }
         return listaSugestao;
      }
   }
    public String toString() {
        return "Sugestao [id=" + idSugestao + ", sugestao :" + sugestao + "]";
    }
}

这是出现的错误,我不知道如何解决。

error: no suitable method found for add(Sugestao)

3 个答案:

答案 0 :(得分:1)

由于您的listaSugestao声明而出现错误。它是JTextArea类型的ArrayList,它只接受JTextArea个对象,并尝试向其添加Sugestao个对象。您需要将ArrayList声明更改为类型为Sugestao的ArrayList。

更改此行:

  ArrayList<JTextArea> listaSugestao = new ArrayList<>();

到此:

  ArrayList<Sugestao> listaSugestao = new ArrayList<>();

答案 1 :(得分:0)

在您当前的代码中,您的arraylist正在使用JTextArea类型,因为您已将其声明为ArrayList<JTextArea> guardaSugestao; 因此,需要将其更改为

ArrayList<Sugestao> guardaSugestao;

这样就可以将Sugestao种类型纳入列表中。

另外,请确保相应更改您的方法setGuardaSugestao()guardaSugestao()adicionarSugestao()以接受ArrayList<Sugestao>

答案 2 :(得分:0)

listaSugestao期望JTextArea类型的元素。 但在listaSugestao.add(s);中,您的变量s的类型为Sugestao

只需将ArrayList<JTextArea>的类型更改为ArrayList<Sugestao>,将 方法定义从public ArrayList<JTextArea> carregaSugestao(Connection conn)更改为public ArrayList<Sugestao> carregaSugestao(Connection conn),它就可以正常运行。