2013-03-31 42 views
0

我創建了一個像這樣的JavaBean類。無法將Bean添加到ArrayList

package beans; 

public class Invoice { 
    private String companyName; 
    private double price; 

    public String getCompanyName() { 
     return companyName; 
    } 

    public void setCompanyName(String companyName) { 
     this.companyName = companyName; 
    } 

    public double getPrice() { 
     return price; 
    } 

    public void setPrice(double price) { 
     this.price = price; 
    } 

} 

然後我創建了一個Servlet,其中從HTML文件中獲取參數,創建了一個Bean。我正在嘗試將該Bean添加到ArrayList。

protected void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 

     String companyName = request.getParameter("txtCompany"); 
     double price = Double.parseDouble(request.getParameter("txtPrice")); 

     ArrayList<Invoice> list = (ArrayList<Invoice>) new ArrayList(); 
     Invoice r = new Invoice(); 
     r.setCompanyName(companyName); 

     list.add(r.getCompanyName()); 
     r.setPrice(price); 

    } 

} 

但我混得此錯誤。新增

The method add(Invoice) in the type ArrayList<Invoice> is not applicable for the arguments (String) 

在哪裏我可能是錯的?

回答

0

您的代碼管理不善,並且有錯誤。

  1. 聲明和轉讓。你有ArrayList<Invoice> list = (ArrayList<Invoice>) new ArrayList();。雖然代碼將起作用,但很難理解爲什麼在分配過程中不使用泛型並進行演員表演。接下來,爲了避免緊耦合,我們通常將聲明一個變量作爲接口,但不是作爲具體實現。更正,您將有以下行:List<Invoice> list = new ArrayList<Invoice>();
  2. 填充集合。正如你宣稱你的列表只包含Invoice的實例,您將只能添加Invoice繼承自Invoice的對象和對象。當然,在list.add(r.getCompanyName());行中,您試圖添加一個字符串,該字符串不會擴展爲Invoice或其任何子類。所以,只需添加對象:list.add(r)就可以了。
0

ArrayList < Invoice> list =(ArrayList < Invoice>)new ArrayList();發票r =新發票(); r。 setCompanyName(companyName); r。 setPrice(price); 列表。添加(r)}}您應該只添加invoce對象...您試圖直接插入字符串...