Trong DAO của tôi, tôi có phương thức mà tôi xây dựng 2 đối tượng khác nhau và tôi muốn trả về cả hai đối tượng đó, nhưng tôi không chắc cách tốt nhất là làm đi. Tôi đã xem xét sử dụng ? extends myObject
, tạo một lớp khác chứa cả hai đối tượng của tôi mà tôi muốn trả về và chỉ sử dụng List<Object>
.Java - Cách tốt nhất để trả về nhiều kiểu đối tượng từ một phương thức
Câu chuyện dài ngắn về lý do tại sao tôi cần các đối tượng tương tự này để hiển thị 1 trên màn hình và mặt kia để sử dụng với dữ liệu thủ công không xử lý danh sách trong đối tượng theo như tôi biết.
Lớp Person
public class Person() {
firstName = null;
lastName = null;
List<Programs> programs = new ArrayList<Programs>();
// Getters and setters
}
Lớp DataExporterPerson
public class DataExporterPerson() {
firstName = null;
lastName = null;
String program = null;
// Getters and setters
}
phương pháp DAO:
public List<SOMETHING> getPeople() {
// query db for people
// build both objects
return ?????
}
Bây giờ tôi hiểu tôi có thể rất dễ dàng tạo ra một đối tượng như hình dưới đây, nhưng điều đó dường như một cách không hiệu quả để làm mọi thứ vì tôi cơ bản tạo ra một vật thể chỉ để trở về từ 1 meth od.
public class PersonTransporter() {
Person person = null;
DataExporterPerson = null;
}
Cách tốt nhất để xử lý trường hợp này là gì?
EDIT
Lý do mà tôi đang cố gắng để trở lại 2 đối tượng trong 1 phương pháp là bởi vì đây là một phương pháp DAO rằng truy vấn cơ sở dữ liệu và xây dựng 2 đối tượng dựa trên các dữ liệu trong truy vấn. Tôi không muốn chia nó thành 2 phương pháp vì tôi không muốn truy vấn db hai lần nếu tôi không cần.
Tại sao 'DataExporterPerson' không' mở rộng Person'? Sau đó, bạn có thể sử dụng một 'Bộ sưu tập '. –
Nói chung một ý tưởng không tốt cho một phương pháp duy nhất là làm hai việc. Bạn có thể làm sáng tỏ tại sao một phương thức * yêu cầu * hai giá trị trả về? –
Có thể không làm hai việc; nó có thể làm một điều và trả về 2-tuple. –