Java变长变量(类似ES6的剩余参数)应用例子

今天看代码的时候,看到一处如下:

第三个参数提示:...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异常。

总结就是,变成变量应该主要用来转为数组对象吧。

原文地址:https://www.cnblogs.com/lzrun/p/9651362.html

时间: 2024-08-02 02:06:34

Java变长变量(类似ES6的剩余参数)应用例子的相关文章

java 变长參数使用原则

1.java变长參数用...表示,如Print(String... args){  ... }; 2.假设一个调用既匹配一个固定參数方法.又匹配一个变长參数方法,则优先匹配固定參数的方法 3.假设一个调用能匹配两个及以上的变长參数方法,则出现错误--这事实上表示方法设计有问题,编译器会提示The method is ambiguous 4.方法仅仅能有一个变长參数,且必须放在參数列表的最后一个

java 变长参数使用原则

1.java变长参数用...表示,如Print(String... args){  ... }; 2.如果一个调用既匹配一个固定参数方法,又匹配一个变长参数方法,则优先匹配固定参数的方法 3.如果一个调用能匹配两个及以上的变长参数方法,则出现错误--这其实表示方法设计有问题,编译器会提示The method is ambiguous 4.方法只能有一个变长参数,且必须放在参数列表的最后一个java 变长参数使用原则,布布扣,bubuko.com

java变长参数

从java5开始提供了变长参数,可以把变长参数当作数据使用 可变长参数方法的定义 使用...表示可变长参数,例如 print(String... args){ ... } 在具有可变长参数的方法中可以把参数当成数组使用,例如可以循环输出所有的参数值. print(String... args){ for(String temp:args) System.out.println(temp); } 可变长参数的方法的调用 调用的时候可以给出任意多个参数,例如: print("hello")

Java 变长參数Varargs

Varargs (variable arguments)可变长參数是Java 1.5引入的特性. 方法的形參如print(String ... s),实參为随意数目的值. public class VarargsDemo{ public static void print(String ... s){ for(String a: s) System.out.print(a); } public static void main(String[] args) { print("a", &

Java 变长参数Varargs

Varargs (variable arguments)可变长参数是Java 1.5引入的特性. 方法的形参如print(String ... s),实参为任意数目的值. public class VarargsDemo{ public static void print(String ... s){ for(String a: s) System.out.print(a); } public static void main(String[] args) { print("a", &

ES6函数剩余参数(Rest Parameters)

我们知道JS函数内部有个arguments对象,可以拿到全部实参.现在ES6给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数(废话好多 O(∩_∩)O~). 这个新的对象和arguments不一样,它是程序员自定义的一个普通标识符,只是需要在前面加上三个点:... function func(a, ...rest) { console.log(a) console.log(rest) } func(1) func(1, 2, 3, 4) 注意func的第二个参数rest,前面有三

java的原子变量

java的原子变量类似c++的InterlockedDecrement()操作.其实就是在进行算术时,把整个算式看为一个整体,并且保证同一时间只计算该式子一次. 它的用途比如,多个线程可能会调用某个函数.但是现在只希望它被调用一次后就不被调用了.此时就可以用原子变量来控制,它比对整个方法加锁更加高效. 1.private AtomicInteger account = new AtomicInteger(1); //声明 2.private void fun() { if(m_nStopCoun

C++11变长模板解析(深入理解C++11)

参考自:深入理解C++11 变长模版: 变长函数和变长的模版参数 变长函数: double sum(int n, ...)//求n个double数据之和 { double sum = 0; va_list args;//接受输入数据的数据结构,需声明stdarg.h, va_start(args, n); //初始化数据 while (n>0) { sum += va_arg(args, double); //将args中的数据一一取出,每隔sizeof(double)取一次数,再求和 --n;

pytorch中如何处理RNN输入变长序列padding

一.为什么RNN需要处理变长输入 假设我们有情感分析的例子,对每句话进行一个感情级别的分类,主体流程大概是下图所示: 思路比较简单,但是当我们进行batch个训练数据一起计算的时候,我们会遇到多个训练样例长度不同的情况,这样我们就会很自然的进行padding,将短句子padding为跟最长的句子一样. 比如向下图这样: 但是这会有一个问题,什么问题呢?比如上图,句子“Yes”只有一个单词,但是padding了5的pad符号,这样会导致LSTM对它的表示通过了非常多无用的字符,这样得到的句子表示就