varargs数组创建是否懒惰?

时间:2016-06-15 15:32:04

标签: java performance

请考虑以下代码:

void someMethod(Object... varargParam){
    if(someCondition){
        doSomethingWith(varargParam);
    }
}

如果someCondition解析为false,则varargParam未使用。 Object array是否仍然会被创建,或者这个创作是否被张贴到第一次使用?

1 个答案:

答案 0 :(得分:0)

调用发生时会创建

varargParam,如果在方法本身没有使用的话,也会创建。{/ p>

来自JLS 15.14.2

  

如果被调用的方法是变量arity方法m,则它必然具有n> 0形式参数。对于某些T,m的最终形式参数必然具有类型T [],并且必须使用k≥0实际参数表达式调用m。