2015-05-19 26 views
5

Tôi muốn biết cách sử dụng đối tượng ObjetTWS với tham số của hàm ObjectTWS(). Và làm thế nào tôi có thể đặt đối tượng trong một Arraylist hoặc List.Đối tượng Java trong Arraylist hoặc Danh sách

public class ObjetTWS { 

    String nom; 
    List<String> jobAmont; 
    List<String> jobAval; 
    String type; 


    public ObjetTWS(String p_nom, String p_type,String p_jobAmont,String p_jobAval){ 

Tôi đã cố gắng này, nhưng nó nói ObjetTWS không xác định:

ObjetTWS obj = new ObjetTWS(); 

obj.nom = p_nom; 
obj.jobAmont.add(p_jobAmont); 
obj.jobAval.add(p_jobAval); 
obj.type = p_type; 
+0

được bạn khởi tạo danh sách ở đâu? – Stugal

+0

Có nhưng vấn đề là với đối tượng tôi đã tạo.Lỗi của dòng này ObjetTWS obj = new ObjetTWS() là hàm tạo ObjetTWS không xác định. – Subas

+2

@Subas, Các thuộc tính (trừ trường hợp đó là một trường hợp cụ thể) nên là tất cả riêng tư và cách chúng truy cập chúng phải luôn sử dụng các phương pháp getters và setters. Hãy ghi nhớ. – Drumnbass

Trả lời

6

Bạn đã định nghĩa một constructor:

public ObjetTWS(String p_nom, String p_type,String p_jobAmont,String p_jobAval){ 

Điều đó làm cho JVM để bỏ qua các constructor mặc định, vì vậy bạn phải thêm nó theo cách thủ công

public ObjetTWS() {} 

Hoặc tuyên bố đối tượng với constructor đưa ra:

ObjetTWS obj = new ObjetTWS(p_nom, p_type,p_jobAmont, p_jobAval); 
1

Trước tiên, bạn nên khởi tạo danh sách

public class ObjetTWS { 
    String nom; 
    List<String> jobAmont = new ArrayList<String>(); 
    List<String> jobAval = new ArrayList<String>(); 
    String type; 

Sau đó, bạn cố gắng thêm các yếu tố vào nó.

Và cũng cố gắng giữ cho constructor mặc định của bạn

Khi bạn đang trọng nó bằng cách lập luận constructor

public ObjectTWS() {} 
+1

Xin lỗi tôi đã ở giữa eidting câu trả lời của tôi bởi thời gian bạn đã nhận xét :) – Babel

1

Theo mặc định, các đối tượng có một tham số ít nhà xây dựng (đó là một trong những bạn đang gọi ở của bạn đoạn mã thứ hai). Tuy nhiên, điều này được thay thế với các nhà thầu khác khi bạn cung cấp cho họ, đó là những gì bạn đang làm trong ví dụ đầu tiên của bạn.

Để giải quyết vấn đề này, bạn có 2 lựa chọn:

  1. Thêm một tham số ít constructor trong lớp ObjetTWS của bạn: public ObjeTWS() {} //Do any initialization here

  2. Trong mẫu mã thứ hai của bạn, sử dụng này: ObjetTWS obj = new ObjetTWS(p_nom, p_type, p_jobAmont, p_jobAval);

2

Vì bạn đã tạo một hàm tạo của riêng bạn trong lớp của bạn với tham số nên cấu trúc mặc định hoặc sẽ không hoạt động chút nào, vì vậy bạn phải truyền các tham số với hàm tạo của bạn và cũng khởi tạo Danh sách trước khi thêm phần tử vào chúng.

0

public ObjetTWS(String p_nom, String p_type,String p_jobAmont,String p_jobAval) những gì bạn có ở đây là một hàm tạo tham số. Tuy nhiên, trong mã bạn đang cố gắng thực hiện điều này ObjetTWS obj = new ObjetTWS();

Điều gì cho chúng tôi biết là bạn không có nhà xây dựng không có đối số.

Vì vậy, để có thể làm được điều này, bạn cần phải thêm constructor khác để lớp học của bạn, mà nên xem xét như thế này:

public ObjectTWS() { 
    // Any code logic 
} 
Các vấn đề liên quan