村长 发表于 2020-12-5 22:59:23

【梅开二度】Java可变参数

定义方法在定义方法时,在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值,多个参数值被当成数组传入。上述定义有几个要点需要注意:可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数由于可变参数必须是最后一个参数,所以一个函数最多只能有一个可变参数Java的可变参数,会被编译器转型为一个数组变长参数在编译为字节码后,在方法签名中就是以数组形态出现的。这两个方法的签名是一致的,不能作为方法的重载。如果同时出现,是不能编译通过的。可变参数可以兼容数组,反之则不成立public void foo(String...varargs){}foo("arg1", "arg2", "arg3");//上述过程和下面的调用是等价的foo(new String[]{"arg1", "arg2", "arg3"});J2SE 1.5 中新增了"泛型"的机制,可以在一定条件下把一个类型参数化。例如,可以在编写一个类的时候,把一个方法的形参的类型用一个标识符(如T)来代表, 至于这个标识符到底表示什么类型,则在生成这个类的实例的时候再行指定。这一机制可以用来提供更充分的代码重用和更严格的编译时类型检查。不过泛型机制却不能和个数可变的形参配合使用。如果把一个能和不确定个实参相匹配的形参的类型,用一个标识符来代表,那么编译器会给出一个 "generic array creation" 的错误public class Varargs {    public static void test(String... args) {      for(String arg : args) {//当作数组用foreach遍历            System.out.println(arg);      }    }    //Compile error    //The variable argument type Object of the method must be the last parameter    //public void error1(String... args, Object o) {}    //public void error2(String... args, Integer... i) {}    //Compile error    //Duplicate method test(String...) in type Varargs    //public void test(String[] args){}}可变参数方法的调用调用可变参数方法,可以给出零到任意多个参数,编译器会将可变参数转化为一个数组。也可以直接传递一个数组,示例如下:public class Varargs {    public static void test(String... args) {      for(String arg : args) {            System.out.println(arg);      }    }    public static void main(String[] args) {      test();//0个参数      test("a");//1个参数      test("a","b");//多个参数      test(new String[] {"a", "b", "c"});//直接传递数组    }}方法重载优先匹配固定参数调用一个被重载的方法时,如果此调用既能够和固定参数的重载方法匹配,也能够与可变长参数的重载方法匹配,则选择固定参数的方法:public class Varargs {    public static void test(String... args) {      System.out.println("version 1");    }    public static void test(String arg1, String arg2) {      System.out.println("version 2");    }    public static void main(String[] args) {      test("a","b");//version 2 优先匹配固定参数的重载方法                test();//version 1    }}

yichong 发表于 2020-12-6 13:13:43

看帖要回,回帖才健康,在踩踩,楼主辛苦了!

大司命 发表于 2020-12-6 17:25:46

:lol

neige 发表于 2020-12-8 07:00:41

啥玩应呀

梦影 发表于 2020-12-8 07:13:57

众里寻他千百度,蓦然回首在这里!

liqiang24 发表于 2020-12-8 14:52:52

村长给力

68079330 发表于 2020-12-8 18:38:56

是爷们的娘们的都帮顶!大力支持

伴我多久 发表于 2020-12-10 15:24:30

我是个凑数的。。。
页: [1]
查看完整版本: 【梅开二度】Java可变参数

村长黑科技是专业提供项目资源的服务的村长黑科技平台,如合购网赚项目、引流推广软件、软件程序开发等项目就选村长黑科
技平台参与或发布项目定制各种软件就来村长黑科技平台

本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件的破解分析文章、破解分析视频、补丁、注册机和注册信息,

仅限用于学习和研究软件安全的目的。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习破解分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,

请购买注册正版软件,获得正版优质服务!不允许将上述内容私自传播、销售或者其他任何非法用途!否则,产生任何法律责任,一切后果请用户自负,与本网站无关!如有侵权或非法用途请举报!请发送到邮箱:cxphj8@foxmail.com

《意见反馈》或《截图指定页面备注》发送到邮件,收到后24小时内删除,禁止用户学习使用关掉用户【学习使用权】!