ArrayList说我的方法不能转换为ArrayList(不兼容的类型)

时间:2019-01-11 21:18:04

标签: java arraylist

我想将mysql数据库中的数据显示到我的Java应用程序中的jtable中。我遵循以下代码,但无法在行中识别出我的CustomerOrder()方法:

ArrayList<Customer> list = new CustomerOrder();

我有一个Product类,在其中声明和调用诸如getId等的方法。 我也有一种连接方法,可以在其中为数据库建立连接。

我不知道该怎么办。请帮忙。

这是我的代码


     public Connection getConnection()
    {
        Connection con = null;
        try {

            con = DriverManager.getConnection("jdbc:mysql://localhost/hello","root","");
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return con;
    }

      public ArrayList<Customer> CustomerOrder()
      {
               ArrayList<Customer> UsersLists = new ArrayList<>();
           Connection con = getConnection(); 
           String query = "SELECT * FROM rent1";

           Statement st;
           ResultSet rs;



          try {

           st = con.createStatement();
           rs = st.executeQuery(query);

              Customer customer;
              while(rs.next())
              {
                  customer = new Customer(rs.getInt("BookingID"), rs.getString("Username"),  rs.getString("Product"), rs.getString("Req"), 
                          rs.getString("Ret"),  rs.getInt("Nofdays"), rs.getString("Price"));

                  UsersLists.add(customer);

              }

          } catch (Exception e){
              JOptionPane.showMessageDialog(null, e);

          }
           return UsersLists;
      }

       public void showUser()
           {
              ArrayList<Customer> list = new CustomerOrder();
              DefaultTableModel model = (DefaultTableModel)usertable.getModel();
              Object[] row = new Object[7];
              for(int i=0; i<list.size();i++ ){
                  row[0]= list.get(i).getId();
                   row[1]= list.get(i).getUsername();
                    row[2]= list.get(i).getProduct();
                     row[3]= list.get(i).getRequired();
                      row[4]= list.get(i).getReturned();
                       row[5]= list.get(i).getDays();
                        row[6]= list.get(i).getPrice();
                        model.addRow(row);



              }


1 个答案:

答案 0 :(得分:0)

如评论中所述,这里的问题是您试图调用函数CustomerOrder(),但是却使用关键字new,就好像它是构造函数一样。接近以下内容的方法应该起作用:

ArrayList<Customer> list = CustomerOrder();

但是,我认为有一些事情可能是导致此问题的原因的原因,因此有必要解决这些问题,以帮助将来避免此类情况。

  1. 在Java的方法名称中从来没有使用大写字母(至少我已经知道)。前导资本用于使用new关键字调用的构造函数。因此,尽管new CustomerOrder() 看起来有效,但由于大多数人会使用customerOrder()(不是new,小写的'c'),因此是一种方法。

    < / li> 鉴于
  2. customerOrder似乎返回了Customer对象的列表,因此对于该方法而言似乎是一个奇怪的名字。以我的经验,即使您认为足够都清楚地为类型和方法使用描述性名称,也可以防止可能导致此类错误的小小的误解。查看其余的代码,看来您的Customer类实际上并不代表客户,而是订单或类似的东西。也许此功能旨在获取所有客户订单的列表。如果是这样,适当地更改该类名和更改您的函数名将有助于使您想做的事情更加清晰。例如,也许您真的想要这样的东西:

    ArrayList<CustomerOrder> list = getAllCustomerOrders();
    

在您处理其余代码时,请牢记这些要点,并通常考虑所执行的操作是否真正代表了您要使用的真实实体(或数学实体)。您可能会发现,当您尝试使代码更准确地表示您要处理的实体时,错误变得更加明显并且更容易避免。