摘要:最近在寫一個功能點,用了中的可變參數(shù),真是把我搞得夠慘。。我找到了阿里巴巴的開發(fā)手冊中關于可變參數(shù)的規(guī)約。阿里巴巴也是不建議大家合作可變參數(shù)的,可知它帶來的坑會有多坑。。
最近在寫一個功能點,用了 Java 中的可變參數(shù),真是把我搞得夠慘。。
什么是可變參數(shù)?
就是方法參數(shù)用 Object... args 三個點形式,一個參數(shù)可以接收多個參數(shù)。
實際的代碼就不帖了,來看這個示例吧:
示例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); }
大家猜結(jié)果是什么?結(jié)果如我們想象:
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 最后,再來看下結(jié)果是什么。
name=[Ljava.lang.Object;@4cb2c100&memo=666
這并非是我想要的結(jié)果,把可變參數(shù) params 數(shù)組對象地址作為值輸出出來了,把我搞得夠慘,最后我干掉了可變參數(shù)。。
JDK里面很多有用到可變參數(shù)的,可實際開發(fā)中,并不建議使用可變參考,它帶來的困擾和潛在的問題會遠大于便利性,比如在方法重構、重寫等也會帶來很多問題。
關于可變參數(shù),也是有開發(fā)規(guī)范的,不能隨便寫。我找到了阿里巴巴的《Java開發(fā)手冊》中關于可變參數(shù)的規(guī)約。
相同參數(shù)類型,相同業(yè)務含義,才可以使用 Java 的可變參數(shù),避免使用 Object 。說明:可變參數(shù)必須放置在參數(shù)列表的最后。 ( 提倡同學們盡量不用可變參數(shù)編程 )
正例: public List
listUsers(String type, Long... ids) {...}
獲取這份阿里巴巴的Java開發(fā)手冊最新PDF版,大家可以關注Java技術棧微信公眾號,在后臺回復:手冊,即可獲取。
阿里巴巴也是不建議大家合作可變參數(shù)的,可知它帶來的坑會有多坑。。
另外,棧長已經(jīng)整理了大量 Java 系列核心技術知識點文章,關注Java技術棧微信公眾號,在后臺回復關鍵字:java,即可獲取最新版。
本文原創(chuàng)首發(fā)于微信公眾號:Java技術棧(id:javastack),轉(zhuǎn)載請原樣保留本信息。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/74906.html
摘要:所以,哪怕是初學者,都要了解并能夠解決字符編碼問題。在這個世界上,有好多不同的字符編碼。目前最新的版本為,已收入超過十萬個字符第十萬個字符在年獲采納。涵蓋的數(shù)據(jù)除了視覺上的字形編碼方法標準的字符編碼外,還包含了字符特性,如大小寫字母。 字符編碼,在編程中,是一個讓學習者比較郁悶的東西,比如一個str,如果都是英文,好說多了。但恰恰不是如此,中文是我們不得不用的。所以,哪怕是初學者,都要...
摘要:然而小程序放上去不到兩周,就在昨天就在昨天就在昨天,突然收到騰訊云的郵件提示,欠費,,什么情況啊,我懵逼了,想了半天,先充了幾塊錢進去,畢竟不想自己努力構思的產(chǎn)品,就誕生這么幾天就夭折了。 showImg(https://segmentfault.com/img/bVbkcfC?w=1080&h=298); 做過前端,或?qū)π〕绦蛴行┝私獾耐瑢W都知道,小程序是沒有域名訪問概念的,訪問的路...
摘要:然而小程序放上去不到兩周,就在昨天就在昨天就在昨天,突然收到騰訊云的郵件提示,欠費,,什么情況啊,我懵逼了,想了半天,先充了幾塊錢進去,畢竟不想自己努力構思的產(chǎn)品,就誕生這么幾天就夭折了。 showImg(https://segmentfault.com/img/bVbkcfC?w=1080&h=298); 做過前端,或?qū)π〕绦蛴行┝私獾耐瑢W都知道,小程序是沒有域名訪問概念的,訪問的路...
摘要:使用監(jiān)聽中的元素的與事件,然后在中顯示第二層中相同索引的元素,從而實現(xiàn)高亮,事件用于清除高亮 坑爹的三角形導航終于制作完成了,下面分享一下思路,先看最終效果:http://mall.juesheng.com/act/butie3showImg(https://segmentfault.com/img/bVkFK9); 基本思路:使用古老的 Image Mapping 技術,在圖片上定義...
閱讀 2948·2021-11-15 11:39
閱讀 1942·2021-09-24 09:48
閱讀 1150·2021-09-22 15:36
閱讀 3668·2021-09-10 11:22
閱讀 3183·2021-09-07 09:59
閱讀 1008·2021-09-03 10:28
閱讀 733·2021-09-02 15:15
閱讀 2802·2021-08-27 16:24