java - Java - 从方法返回多个对象类型的最佳方法[关闭]

在我的dao中,我有一个方法,在这里我构建了两个不同的对象,我想返回这两个对象,但是我不确定最好的方法是什么。我已经研究过使用? extends myObject,创建另一个类来保存我要返回的两个对象,并且只使用List<Object>
关于为什么我需要这些类似的对象的简短说明是,在屏幕上显示1,另一个用于primefaces dataexporter,据我所知,它不处理对象中的列表。
类人

public class Person() {
  firstName = null;
  lastName = null;
  List<Programs> programs = new ArrayList<Programs>();

  // Getters and setters
}

类DataExporterPerson
public class DataExporterPerson() {
  firstName = null;
  lastName = null;
  String program = null;

  // Getters and setters
}

DAO法:
public List<SOMETHING> getPeople() {
  // query db for people

  // build both objects

  return ?????
}

现在我知道我可以很容易地创建另一个像下面这样的对象,但这似乎是一种低效的方法,因为我基本上是创建一个只从1个方法返回的对象。
public class PersonTransporter() {
  Person person = null;
  DataExporterPerson = null;
}

处理这种情况的最佳方法是什么?
编辑
我试图在1个方法中返回2个对象的原因是,这是一个dao方法,它查询数据库并基于查询中的数据构建2个对象。我不想把它分成两个方法,因为如果不需要的话,我不想查询数据库两次。

最佳答案

您可以通过继承或包含来处理这个问题。
您可以让PersonDataExporterPerson扩展类似于AbstractPerson的内容。但是,由于您还没有这样做,所以可能不适合进行继承。
我认为它是有效的C++,它讨论了如何遏制比继承更好。iirc声明的原因是包含比继承更松散耦合。
这里有一个同时包含PersonDataExporterPerson的对象。您的方法将为这个union类型对象填充其中一个,通过查看哪个为空,您将知道您实际拥有哪个。

public class DBPersonUnion {
  private Person person = null;
  private DataExporterPerson dataExporterPerson = null;

  //getters and setters.
}

本文翻译自 https://stackoverflow.com/questions/18151540/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java inheritance containment


相关文章:

java - 当设备处于横向模式时显示软键盘

python - 在子类实例化期间获取AttributeError

java - 在参数中使用通用集合

c++ - 从包含的对象访问包含对象的成员

java - 发现是否在try-finally块的最后部分引发了异常

java - Java,访问另一个类时出现非法访问错误

java - 春天注释NullPointerException

c++ - c ++继承和共享/非共享函数

jquery - jQuery可拖动无法与遏制一起使用

python - “ in”运算符是否使用“ ==”或“ is”进行比较?