看板 java 關於我們 聯絡資訊
※ 引述《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
LaPass:要用 doMyMethod(Object obj,String... strs); 12/21 17:50
LaPass:String[] s={"A","B","C"}; <= 這只有在初始宣告才能用 12/21 17:52
rukawa0328:... 的用法一時想不起來說服別人的CASE, 只能說~ 12/22 01:15
rukawa0328:一朝被蛇咬,十年怕草繩,曾幾何時我也是...愛用者~ 12/22 01:17
rukawa0328:下面這個宣告倒真的漏了~已經習慣前面加new XXX, 受教~ 12/22 01:20
LaPass:是很多書上有說..... 轉型之類的問題,有些東西會去自動轉 12/22 01:32
LaPass:型之類的,像A(Byte b); A(byte b); A(int i);的調用順序 12/22 01:40
LaPass:是固定的,OCPJP也有考這個,只是我覺得沒必要記這個。 12/22 01:56
LaPass:與其搞得這麼容易混淆,不如把他設計的好一點 12/22 01:58