摘要:最近在寫一個功能點,用了中的可變參數,真是把我搞得夠慘。。我找到了阿里巴巴的開發(fā)手冊中關于可變參數的規(guī)約。阿里巴巴也是不建議大家合作可變參數的,可知它帶來的坑會有多坑。。
最近在寫一個功能點,用了 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里面很多有用到可變參數的,可實際開發(fā)中,并不建議使用可變參考,它帶來的困擾和潛在的問題會遠大于便利性,比如在方法重構、重寫等也會帶來很多問題。
關于可變參數,也是有開發(fā)規(guī)范的,不能隨便寫。我找到了阿里巴巴的《Java開發(fā)手冊》中關于可變參數的規(guī)約。
相同參數類型,相同業(yè)務含義,才可以使用 Java 的可變參數,避免使用 Object 。說明:可變參數必須放置在參數列表的最后。 ( 提倡同學們盡量不用可變參數編程 )
正例: public List
listUsers(String type, Long... ids) {...}
獲取這份阿里巴巴的Java開發(fā)手冊最新PDF版,大家可以關注Java技術棧微信公眾號,在后臺回復:手冊,即可獲取。
阿里巴巴也是不建議大家合作可變參數的,可知它帶來的坑會有多坑。。
另外,棧長已經整理了大量 Java 系列核心技術知識點文章,關注Java技術棧微信公眾號,在后臺回復關鍵字:java,即可獲取最新版。
本文原創(chuàng)首發(fā)于微信公眾號:Java技術棧(id:javastack),轉載請原樣保留本信息。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://systransis.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); 做過前端,或對小程序有些了解的同學都知道,小程序是沒有域名訪問概念的,訪問的路...
摘要:使用監(jiān)聽中的元素的與事件,然后在中顯示第二層中相同索引的元素,從而實現高亮,事件用于清除高亮 坑爹的三角形導航終于制作完成了,下面分享一下思路,先看最終效果:http://mall.juesheng.com/act/butie3showImg(https://segmentfault.com/img/bVkFK9); 基本思路:使用古老的 Image Mapping 技術,在圖片上定義...
閱讀 2904·2021-11-15 11:39
閱讀 1893·2021-09-24 09:48
閱讀 1079·2021-09-22 15:36
閱讀 3604·2021-09-10 11:22
閱讀 3073·2021-09-07 09:59
閱讀 964·2021-09-03 10:28
閱讀 686·2021-09-02 15:15
閱讀 2754·2021-08-27 16:24