使用这种方法:
public void args(Class... methodArgsTypes) {
if (methodArgsTypes.length == 0) {
methodArgsTypes = NO_PARAMETERS; // public static Class[0] array
}
this.methodArgsTypes = methodArgsTypes;
}
当调用方法而没有参数args()
时,会创建Class[0]
。由于methodArgsTypes
值在应用的生命周期内保持不变(当您移除上面的if
块时),如上所述if
块是否有意义?它的目的是防止在内存中创建许多空数组,并仅保留对一个公共静态空数组的引用。因此,记忆力较少。
这会有意义吗?
答案 0 :(得分:0)
不,由于两个原因: 1)空数组非常小,几乎可以立即死掉,所以它不会对你的记忆行为产生任何重大影响 2)由于其积极的内联优化,即时编译器很可能无论如何都会优化它。