2016-05-21 21 views
-1

nicht verwenden Ich habe versucht, die Parameter an den Konstruktor übergeben, aber ich bin stecken geblieben, was für die Arraylist in der Methode zu verwenden. Constructor:Kann Arraylist-Parameter in Java

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; 
} 

Aufrufparameter in der Methode:

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); 

Ich bin verwirrt, was im method.Expected Parameter zu verwenden sind Arraylist, aber tatsächliche Parameter in der Methode von String verwendet habe ich nicht Wissen, was man da drüben benutzt.

+0

Sie können String Builder oder Puffer verwenden, um eine durch Kommas getrennte Zeichenfolge zu erstellen und sie dann an den Konstruktor zu übergeben. es ist einfach. – androidnoobdev

+0

Haben Sie versucht, die ArrayList zu erstellen, bevor Sie das Company-Objekt instanziieren und an den Konstruktor übergeben? – Mike

Antwort

0

Sie haben ein paar Optionen:

1) Sie können die ArrayList<String> departments Parameter aus dem Company Konstruktor entfernen und nur noch die company.setDepartments(departments); Setter, wie Sie es jetzt tun.

2) Erstellen Sie die ArrayList<String> departments zuerst, dann passieren, dass an den Konstruktor:

// 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 

3) haben die Firma Konstruktor die ArrayList bauen, indem sie in der JSONArray vorbei.

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)); 
    } 
} 
0

Sie waren in der Nähe.

Verschieben Sie den folgenden Code vor dem Konstruktor des Unternehmens (bevor Sie ein neues Unternehmen anrufen).

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)); 
} 

und rufen:

Company company = new Company(obj.getInt("companyID"),obj.getString("comapnyName"),obj.getString("companyOwner"),obj.getString("companyStartDate"),obj.getString("companyDescription"),obj.getString("companyDepartments"), departments);