我找到了一些 android 代码(链接):
public void getSize(Point outSize) {
synchronized (this) {
updateDisplayInfoLocked();
mDisplayInfo.getAppMetrics(mTempMetrics, mCompatibilityInfo);
outSize.x = mTempMetrics.widthPixels;
outSize.y = mTempMetrics.heightPixels;
}
}
只是想知道 - 是什么让这篇文章的作者以这种方式实现它?(为什么它修改参数而不是返回新对象?Get方法通常是愚蠢的,有返回值,并且不修改参数。我错了吗?)
我能想到的唯一原因是——效率。此方法的用户可以控制创建的 Point 对象的数量。但是设计这样的 API 是一种好的做法吗?
升级版:
我会这样实现它(或类似的东西):
public Point getSize() {
Point outSize = new Point();
synchronized (this) {
updateDisplayInfoLocked();
mDisplayInfo.getAppMetrics(mTempMetrics, mCompatibilityInfo);
outSize.x = mTempMetrics.widthPixels;
outSize.y = mTempMetrics.heightPixels;
}
return outSize;
}