最近框架里那个method(Object...params)引发了一系列的不兼容反应,包括我的生理反应。。。
import java.util.ArrayList;
import java.util.List;
public class TestList {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("wang");
        list.add("hello");
        list.add("world");
        // list不能做为String params的参数
        // test(list);
        // 不能转换成功。why ?
        //test((String[]) list.toArray());
        String[] arr = list.toArray(new String[list.size()]);
        test(arr);
        //源码代看不太懂,toArray方法里面为什么不自己
        //new String[list.size()];难道不是做缓冲的吗?
        String[] arr2 = list.toArray(new String[1]);//一个长度也成功。这不是耍我吗?
        test(arr2);
    }
    public static void test(String params) {
 params) {
        for (int i = 0; i < params.length; i++) {
            System.out.println(params[i]);
        }
    }
}
 
1.为什么(String[])list.toArray()转换会出错。
2.实践证明list.toArray(new String[xx])括号里面的是用作缓冲的。当然分配得多速度就会快了。这个影响会有多大了。
   java这个设计再次让程序参与到性能中,JVM优化边界在哪?什么时候,我们需要考虑到分配一个和N的内存单元缓冲,在速度上的不同?
   这样的时候多吗?如果有,什么时候?