Re: [問題] 參數列表 ~
※ 引述《winnieboy (~砍掉重練~)》之銘言:
: 各位前輩好,最近在做scjp題目時遇到一題如下 :
: public class Barn
: {
: public static void main(String[] args)
: {
: new Barn.go("hi", 1);
: new Barn.go("hi", "world", 2);
: }
: public void go(String... y, int x)
: {
: System.out.print(y[y.length-1] + " ");
: }
: }
: 錯誤是在 String... y 參數列表要放最後,之前沒有學到這個東西,
: google了一下參數列表,但找不到相關詳細的資料,請問有人知道這個用法嗎??
首先有一個很大的問題是你的Barn要有括號:
new Barn().go(...);
或是把go那行改成public static void go,同時main裡面要寫 Barn.go(...);
然後我介紹一下function(Object... args)是什麼東西@@
這叫可變引數列(Variable argument lists)
你用英文查一下可以找到很多資料
有一個特性你要知道:
你只能這樣放:
go(int x, String... y);
而不能這樣放:
go(String... y, int x);
有看出來吧,可變引數列只能放在後面,這是規則
舉例就像是C語言中的printf()一樣,如果你想,你可以在第二個參數之後放很多個參數
在SE5以前,如果你的參數想要放許多同一型態的物件,解決這個問題方法必須用陣列
不過在SE5之後,這個長期以來被大家要求要加入的功能,終於被加入。
所以你的程式改成這樣就可以編過了
public class Test
{
public static void main(String[] args)
{
new Test().go(1,"hi");
new Test().go(2,"hi", "world");
}
public void go(int x,String... y)
{
System.out.print(y[y.length-1] + " ");
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.242.246
討論串 (同標題文章)