1

这个 NotePadProvider 示例代码中,我注意到ContentValues参数是重复的,即使它不为空:

ContentValues values;
if (initialValues != null) {
    values = new ContentValues(initialValues);
} else {
    values = new ContentValues();
}

从表面上看,这看起来是多余的。看起来只写会更有效:

ContentValues values;
if (initialValues != null) {
    values = initialValues;
} else {
    values = new ContentValues();
}

但这不是样本作者选择做的事情,我的问题是为什么?

4

1 回答 1

4

它们不是等价的。原始代码创建了“initialValues”的副本,然后该方法继续修改​​变量中的新实例value。这样,提供给该方法的ContentValues实例不会被该方法修改。insert

您的版本确实修改了原始对象,这可能会在程序的其他区域产生不必要的副作用。

于 2012-08-06T16:32:49.793 回答