作者tonytonyjan (南洋大兜虫)
看板java
标题Re: [问题] 参数列表 ~
时间Thu Mar 18 01:23:07 2010
※ 引述《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