Re: [問題] 將array丟進method中

看板java作者 (卡)時間13年前 (2012/12/21 17:25), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : ※ 引述《Arthurseed (Arthur)》之銘言: : : 各位大大你們好: : : 小弟我遇到一個問題想請教 : : 以下是我的code : : int eventNum = 4; : : Event[] eventList = new Event[eventNum]; : : eventList[0] = new Event({"a","b"}); : : ^^^^^^^^^^ : : eventList[1] = new Event({"c","d"}); : : eventList[2] = new Event({"e","f"}); : : eventList[3] = new Event({"g","h"}); : : 以上標註部分,我想在Constructor時將一個String array丟到class中 : : 我不想創一個array,想向上面那樣直接吃 : : 這樣寫complier一直過不了..... : : 請問我該怎麼做呢?? : 我不確定為甚麼你不想弄一個 array 來傳 : 如果是 memory 問題,那其實(應該)沒差 : 尤其你又是字串陣列 XD : 當然上一篇的方法也是解決之道(不過我不太喜歡那招) : 如果是我的話,我會這樣寫 : Event e = new Event(new String[]{"a","b"}); : ==== : 比較有趣的是,如果像你這樣寫 : 在 Eclipse 炸的 syntax error 好詭異... 原PO那種字串陣列宣告本來就是錯的~ Java 陣列宣告兩種: 一種是原PO EventList那種方法,先給長度再一個個給值。 另一種是板主Ps猴這種方式,ex: new String[]{"a","b"} 另 String... strs 這種參數宣告方式有一個缺點, 就是Overload時,後面不可以再加參數了, 如: public void doMyMethod(String... strs); public void doMyMethod(String... strs, Object obj); 第二行 compiler會錯,這對程式延展性有一定程度的負面影響, 再者這寫法再1.5(5.0)以後才支援,有時候寫習慣還不是很好改回來 :P, 不過這寫法在某個層面來講來挺方便的就是。 所以還是要視你的Method(or Constructor)要做的事來決定。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.164.2

12/21 17:50, , 1F
要用 doMyMethod(Object obj,String... strs);
12/21 17:50, 1F

12/21 17:52, , 2F
String[] s={"A","B","C"}; <= 這只有在初始宣告才能用
12/21 17:52, 2F

12/22 01:15, , 3F
... 的用法一時想不起來說服別人的CASE, 只能說~
12/22 01:15, 3F

12/22 01:17, , 4F
一朝被蛇咬,十年怕草繩,曾幾何時我也是...愛用者~
12/22 01:17, 4F

12/22 01:20, , 5F
下面這個宣告倒真的漏了~已經習慣前面加new XXX, 受教~
12/22 01:20, 5F

12/22 01:32, , 6F
是很多書上有說..... 轉型之類的問題,有些東西會去自動轉
12/22 01:32, 6F

12/22 01:40, , 7F
型之類的,像A(Byte b); A(byte b); A(int i);的調用順序
12/22 01:40, 7F

12/22 01:56, , 8F
是固定的,OCPJP也有考這個,只是我覺得沒必要記這個。
12/22 01:56, 8F

12/22 01:58, , 9F
與其搞得這麼容易混淆,不如把他設計的好一點
12/22 01:58, 9F
文章代碼(AID): #1Gr2i9bj (java)
文章代碼(AID): #1Gr2i9bj (java)