今天看代码的时候,看到一处如下:
第三个参数提示:...properties的写法有点类似之前看过的ES6语法的剩余参数,不知道java也有这玩意儿。搜了下,是jdk1.5的新特性:变长变量。有点孤陋!
百度知道解释:
其实这种定义就类似一个数据的定义,可以不用给它的长度加以限制,可以传入任意多个参数。
比用数据更灵活一些,不会出现一些数组越界等的异常。
如:
getType(String ...values);
调用时,可以getType("a","b","c")等,参数个数没有限制,类型是前面规定的String类型。
继续看代码的调用,首先是跟踪Sort()对像的构造器。Sort()是org.springframework.data.domain包下的一个类,
实现了两个接口,Sort.Order应该就是Sort类里的一个静态内部类了。不扯了,直接看关键位置的构造器:
发现剩余参数变量(变长变量)传进来,主要用于构造ArrayList动态数组对象。搜了下数组工具类asList()的用法,将一个数组转化为一个List对象,
这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,
就会报UnsupportedOperationException异常。
总结就是,变成变量应该主要用来转为数组对象吧。