【发布时间】:2014-06-06 13:17:48
【问题描述】:
如果我需要检索一些对象集合(假设它是某个客户端),可以从 DB 中获取。所以有两种可能:
1 在某些类接收器中我会声明如下:
...
private final List<Client> clients = new ArrayList<Client>();
...
// the fillinng method:
fillClients(){
dbHelper.getClients(clients);
}
所以 dbHelper 的方法将收到一个可以使用的集合,它不会创建新对象(列表),但它会清除并填充现有对象,例如:
public void getClients(List<Client>clients){
clients.clear();
...
while(cursor.moveToNext())
clients.add(new Client(...));
...
return;
}
另外一种模式是:
...
private List<Client> clients;
...
// the fillinng method:
fillClients(){
clients = dbHelper.getClients();
}
所以相应的方法会创建一个新的对象(一个列表):
public List<Client> getClients(){
List<Client>clients = new ArrayList<Client> clients;
...
while(cursor.moveToNext())
clients.add(new Client(...));
...
return clients;
}
这个问题与一个事实有关,即创建新对象是一项有价值的操作。
【问题讨论】:
-
为什么不对其进行基准测试并找出答案?需要考虑的一件事:对象分配在 Java 中非常便宜。
-
@Dmitri 但垃圾收集不是。
标签: java performance