我需要一个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)
答案 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)
,它就可以正常运行。