作者rukawa0328 (卡)
看板java
标题Re: [问题] 将array丢进method中
时间Fri Dec 21 17:25:26 2012
※ 引述《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
1F:推 LaPass:要用 doMyMethod(Object obj,String... strs); 12/21 17:50
2F:→ LaPass:String[] s={"A","B","C"}; <= 这只有在初始宣告才能用 12/21 17:52
3F:→ rukawa0328:... 的用法一时想不起来说服别人的CASE, 只能说~ 12/22 01:15
4F:→ rukawa0328:一朝被蛇咬,十年怕草绳,曾几何时我也是...爱用者~ 12/22 01:17
5F:→ rukawa0328:下面这个宣告倒真的漏了~已经习惯前面加new XXX, 受教~ 12/22 01:20
6F:推 LaPass:是很多书上有说..... 转型之类的问题,有些东西会去自动转 12/22 01:32
7F:→ LaPass:型之类的,像A(Byte b); A(byte b); A(int i);的调用顺序 12/22 01:40
8F:→ LaPass:是固定的,OCPJP也有考这个,只是我觉得没必要记这个。 12/22 01:56
9F:→ LaPass:与其搞得这麽容易混淆,不如把他设计的好一点 12/22 01:58