看代碼中那個三點,這樣做起到重載的作用,但這是什麼意思。
class Father
{
public void foo(String... s)
{
System.out.println("Father:foo");
}
public void bar(String s)
{
System.out.println("Father:bar");
}
}
class Son extends Father
{
public void foo(String s)
{
System.out.println("Son:foo");
}
public void bar(String s)
{
System.out.println("Son:bar");
}
}
===============================================================
不懂這句是什麼意思 public void foo(String... s)
最佳答案
可變數組參數。用...的話,傳參數時可傳可不傳,傳的話,可以是一個個並列地傳,也可以直接是一個數組。
在方法裡取時,s是一個數組,如果調用時什麼都沒有傳,那麼s的長度就是0。傳的時候傳了幾個,s的長度就是幾。
還有,1.5以上才支援這個功能。
寫的例子:
public class Number3 {
public static void main(String[] args) {
printString();
System.out.println("==========");
printString(new String[]{"我","和","你"});
System.out.println("==========");
printString("我","和","你");
}
public static void printString(String... str){
if(str.length==0){
System.out.println("沒有傳參數。");
}
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
}
================================================
java中這種寫法是什麼意思。
2011-4-6 16:12 提問者:g882 | 瀏覽次數:409次
private void removeTempFiles(String... fileNames) {
for (String fileName : fileNames) {
try {
new File(fileName).delete();
} catch (Exception e) {
}
}
}
其中, String... fileNames 代表什麼意思。
2011-4-6 16:26 最佳答案
類型後面三個點(String...),是從Java 5開始,Java語言對方法參數支援一種新寫法,叫可變長度參數列表,其文法就是類型後跟...,表示此處接受的參數為0到多個Object類型的對象,或者是一個Object[]。 例如我們有一個方法叫做test(String...strings),那麼你還可以寫方法test(),但你不能寫test(String[] strings),這樣會出編譯錯誤,系統提示出現重複的方法。
在使用的時候,對於test(String...strings),你可以直接用test()去調用,標示沒有參數,也可以用去test("aaa"),也可以用test(new String[]{"aaa","bbb"})。
另外如果既有test(String...strings)函數,又有test()函數,我們在調用test()時,會優先使用test()函數。只有當沒有test()函數式,我們調用test(),程式才會走test(String...strings)。
例一:
public class Ttest {
//private static int a;
public static void test(int... a){
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static void main(String[] args) {
Ttest.test(1,2);
}
}
例二:
String... excludeProperty表示不定參數,也就是調用這個方法的時候這裡可以傳入多個String對象。
public static void main(String[] args) {
//測試,傳入多個參數
test("hello", "world", "13sd", "china", "cum", "ict");
}
public static void test(String... arguments) {
for (int i = 0; i < arguments.length; i++) {
System.out.println(arguments[i]);
}
}