摘要:最近在写一个功能点,用了中的可变参数,真是把我搞得够惨。。我找到了阿里巴巴的开发手册中关于可变参数的规约。阿里巴巴也是不建议大家合作可变参数的,可知它带来的坑会有多坑。。
最近在写一个功能点,用了 Java 中的可变参数,真是把我搞得够惨。。
什么是可变参数?
就是方法参数用 Object... args 三个点形式,一个参数可以接收多个参数。
实际的代码就不帖了,来看这个示例吧:
示例1
public static void main(String[] args) { test("name=%s&memo=%s", "Java技术栈", "666"); } private static void test(String text, Object... params) { String result = String.format(text, params); System.out.println(result); }
大家猜结果是什么?结果如我们想象:
name=Java技术栈&memo=666
示例2
public static void main(String[] args) { test("name=%s&memo=%s", "Java技术栈"); } private static void test(String text, Object... params) { String result = String.format(text, params, "666"); System.out.println(result); }
我把 "666" 移到了子方法里面,放到了 format 最后,再来看下结果是什么。
name=[Ljava.lang.Object;@4cb2c100&memo=666
这并非是我想要的结果,把可变参数 params 数组对象地址作为值输出出来了,把我搞得够惨,最后我干掉了可变参数。。
JDK里面很多有用到可变参数的,可实际开发中,并不建议使用可变参考,它带来的困扰和潜在的问题会远大于便利性,比如在方法重构、重写等也会带来很多问题。
关于可变参数,也是有开发规范的,不能随便写。我找到了阿里巴巴的《Java开发手册》中关于可变参数的规约。
相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object 。说明:可变参数必须放置在参数列表的最后。 ( 提倡同学们尽量不用可变参数编程 )
正例: public List
listUsers(String type, Long... ids) {...}
获取这份阿里巴巴的Java开发手册最新PDF版,大家可以关注Java技术栈微信公众号,在后台回复:手册,即可获取。
阿里巴巴也是不建议大家合作可变参数的,可知它带来的坑会有多坑。。
另外,栈长已经整理了大量 Java 系列核心技术知识点文章,关注Java技术栈微信公众号,在后台回复关键字:java,即可获取最新版。
本文原创首发于微信公众号:Java技术栈(id:javastack),转载请原样保留本信息。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/74906.html
摘要:所以,哪怕是初学者,都要了解并能够解决字符编码问题。在这个世界上,有好多不同的字符编码。目前最新的版本为,已收入超过十万个字符第十万个字符在年获采纳。涵盖的数据除了视觉上的字形编码方法标准的字符编码外,还包含了字符特性,如大小写字母。 字符编码,在编程中,是一个让学习者比较郁闷的东西,比如一个str,如果都是英文,好说多了。但恰恰不是如此,中文是我们不得不用的。所以,哪怕是初学者,都要...
摘要:然而小程序放上去不到两周,就在昨天就在昨天就在昨天,突然收到腾讯云的邮件提示,欠费,,什么情况啊,我懵逼了,想了半天,先充了几块钱进去,毕竟不想自己努力构思的产品,就诞生这么几天就夭折了。 showImg(https://segmentfault.com/img/bVbkcfC?w=1080&h=298); 做过前端,或对小程序有些了解的同学都知道,小程序是没有域名访问概念的,访问的路...
摘要:然而小程序放上去不到两周,就在昨天就在昨天就在昨天,突然收到腾讯云的邮件提示,欠费,,什么情况啊,我懵逼了,想了半天,先充了几块钱进去,毕竟不想自己努力构思的产品,就诞生这么几天就夭折了。 showImg(https://segmentfault.com/img/bVbkcfC?w=1080&h=298); 做过前端,或对小程序有些了解的同学都知道,小程序是没有域名访问概念的,访问的路...
摘要:使用监听中的元素的与事件,然后在中显示第二层中相同索引的元素,从而实现高亮,事件用于清除高亮 坑爹的三角形导航终于制作完成了,下面分享一下思路,先看最终效果:http://mall.juesheng.com/act/butie3showImg(https://segmentfault.com/img/bVkFK9); 基本思路:使用古老的 Image Mapping 技术,在图片上定义...
阅读 2809·2021-11-15 11:39
阅读 1796·2021-09-24 09:48
阅读 1040·2021-09-22 15:36
阅读 3525·2021-09-10 11:22
阅读 2969·2021-09-07 09:59
阅读 921·2021-09-03 10:28
阅读 637·2021-09-02 15:15
阅读 2726·2021-08-27 16:24