在this NotePadProvider sample code中,我注意到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();
}
但这不是样本的作者选择做的,我的问题是为什么?
答案 0 :(得分:4)
它们并不等同。原始代码创建'initialValues'的副本,然后该方法继续修改变量value
中的新实例。这样,通过此方法修改了提供给ContentValues
方法的insert
实例
您的版本会修改原始对象,这可能会在程序的其他区域产生不必要的副作用。