无法在java中使用arraylist参数

无法在java中使用arraylist参数,java,arraylist,Java,Arraylist,我试图将参数传递给构造函数,但我不知道该方法中的arraylist使用什么。 建造商: public Company(int companyid,String companyname, String companyowner, String startdate, String description, ArrayList<String> departments) { this.companyid=companyid; this.company

我试图将参数传递给构造函数,但我不知道该方法中的arraylist使用什么。 建造商:

public Company(int companyid,String companyname, String companyowner, String startdate, String description,
             ArrayList<String> departments) {
    this.companyid=companyid;
    this.companyname = companyname;
    this.companyowner = companyowner;
    this.startdate = startdate;
    this.description = description;
    this.departments = departments;
}
// Genre is json array
JSONArray companydept = obj.getJSONArray("companyDepartments");
ArrayList<String> departments = new ArrayList<String>();
for (int j = 0; j < companydept.length(); j++) {
     departments.add((String) companydept.get(j));
}

Company company = new Company(obj.getInt("companyID"),
                              obj.getString("comapnyName"),
                              obj.getString("companyOwner"),
                              obj.getString("companyStartDate"),
                              obj.getString("companyDescription"),
                              departments); // <--- Pass the ArrayList here
public Company(int companyid,String companyname,String companyowner,String startdate,String description,
ArrayList部门){
this.companyid=companyid;
this.companyname=companyname;
this.companyowner=公司所有者;
this.startdate=startdate;
this.description=描述;
这个.部门=部门;
}
在方法中调用参数:

Company company = new Company(obj.getInt("companyID"),obj.getString("comapnyName"),obj.getString("companyOwner"),obj.getString("companyStartDate"),obj.getString("companyDescription"),obj.getString("companyDepartments"));
company.setCompanyid(obj.getInt("companyID"));
company.setCompanyname(obj.getString("comapnyName"));
company.setCompanyowner(obj.getString("companyOwner"));
company.setStartdate(obj.getString("companyStartDate"));
company.setDescription(obj.getString("companyDescription"));


// Genre is json array
JSONArray companydept = obj.getJSONArray("companyDepartments");
ArrayList<String> departments = new ArrayList<String>();
for (int j = 0; j < companydept.length(); j++) {
    departments.add((String) companydept.get(j));
}
company.setDepartments(departments);
Company Company=新公司(obj.getInt(“companyID”)、obj.getString(“comapnyName”)、obj.getString(“companyOwner”)、obj.getString(“companyStart日期”)、obj.getString(“companyDescription”)、obj.getString(“companyDepartments”);
company.setCompanyid(对象GEINT(“companyID”);
company.setCompanyname(obj.getString(“comapnyName”);
company.setCompanyowner(对象getString(“companyOwner”);
company.setStartdate(对象getString(“companyStartDate”);
company.setDescription(obj.getString(“companyDescription”);
//类型是json数组
JSONArray companydept=obj.getJSONArray(“公司部门”);
ArrayList departments=新建ArrayList();
对于(int j=0;j
我不知道该在方法中使用什么。预期的参数是Arraylist,但该方法中使用的实际参数是String,我不知道在那里使用什么。

您很接近

将以下代码移到公司的构造函数之前(在调用新公司之前)


您有几个选择:

1) 您可以从
Company
构造函数中删除
ArrayList departments
参数,只需使用
Company.setDepartments(departments)设置器,就像你现在做的那样

2) 首先创建
ArrayList部门
,然后将其传递给构造函数:

public Company(int companyid,String companyname, String companyowner, String startdate, String description,
             ArrayList<String> departments) {
    this.companyid=companyid;
    this.companyname = companyname;
    this.companyowner = companyowner;
    this.startdate = startdate;
    this.description = description;
    this.departments = departments;
}
// Genre is json array
JSONArray companydept = obj.getJSONArray("companyDepartments");
ArrayList<String> departments = new ArrayList<String>();
for (int j = 0; j < companydept.length(); j++) {
     departments.add((String) companydept.get(j));
}

Company company = new Company(obj.getInt("companyID"),
                              obj.getString("comapnyName"),
                              obj.getString("companyOwner"),
                              obj.getString("companyStartDate"),
                              obj.getString("companyDescription"),
                              departments); // <--- Pass the ArrayList here

您可以使用字符串生成器或缓冲区创建逗号分隔的字符串,然后将其传递给构造函数。这很简单。在实例化Company对象之前,您是否尝试过创建ArrayList,并将其传递给构造函数?
public Company(int companyid,String companyname, 
               String companyowner, String startdate, 
               String description, JSONArray companydept) {
     this.companyid=companyid;
     this.companyname = companyname;
     this.companyowner = companyowner;
     this.startdate = startdate;
     this.description = description;

    // build it in the constructor here:
    this.departments = new ArrayList<String>();
    for (int j = 0; j < companydept.length(); j++) {
         departments.add((String) companydept.get(j));
    }  
}