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