有3个参数但接受一个参数的方法?

时间:2015-03-04 15:07:21

标签: java methods parameters

有没有办法让Method接受3个或更多参数但可以接受1?

public void getAllSongs(String one, String two, String Three){
dosomething
}
getAllSongs("tada");

也许不是最好的解释方式,但我不知道怎么回事。 我希望在更多方面使用相同的方法.. 它甚至可能吗?

8 个答案:

答案 0 :(得分:6)

另一种方法是编写像

这样的代码
public void getAllSongs(String... songs){
    for(String song : songs){
       //do somethihg
    }
}

通过这种方式,您可以像

一样调用您的代码
getAllSongs("song");
getAllSongs("song1", "song2"......)

答案 1 :(得分:4)

您可以使用方法重载:

public void getAllSongs(String one ){
  getAllSongs(one,null,null);
}

public void getAllSongs(String one, String two, String Three){
dosomething
}
getAllSongs("tada");

答案 2 :(得分:2)

可以调用具有可变数量参数的方法,例如

public void getAllSongs(String ... songs)

答案 3 :(得分:0)

我不确切地知道你想问什么。 但我认为它应该是

    public void getAllSongs(String... number) {
    // do something
    }

答案 4 :(得分:0)

使用不同数量的参数重载相同的方法,如下所示:

public void getAllSongs(String arg1) {
    getAllSongs(arg1, "default arg2", "default arg3");
}

public void getAllSongs(String arg1, String arg2) {
    getAllSongs(arg1, arg2, "default arg3");
}

public void getAllSongs(String arg1, String arg2, String arg3) {
    // do stuff with args
}

答案 5 :(得分:0)

是的,你当然可以,它被称为多态或者更具体地说是方法重载

在Java中,可以在类中定义两个或多个同名方法,前提是参数列表或参数不同。这个概念称为方法重载。

查看Polymorphism in Java – Method Overloading and Overriding

示例:

void demo (int a) {
   System.out.println ("a: " + a);
}
void demo (int a, int b) {
   System.out.println ("a and b: " + a + "," + b);
}

答案 6 :(得分:0)

您可以通过使用(重载)具有不同数量的输入值的方法来解决此问题。用户可以使用只有一个/两个/三个...值来调用一个。如果需要,这个可以使用更多值来调用它。它可能是这样的:

public void getAllSongs(String one){
  getAllSongs(one, null, null)
}

public void getAllSongs(String one, String two){
  getAllSongs(one, two, null)
}

public void getAllSongs(String one, String two, String Three){
dosomething
}

电话可能是:

getAllSongs("bla","blub");

使用数组的另一种可能性:

public void getAllSongs(ArrayList<String> songs){ 
do something 
}; 

List<String> songs= new ArrayList<String>();
songs.add("bla");
songs.add("blub");
getAllSongs(songs);

ArrayList是一个aarray,其动态大小取决于其中的值的数量。在你的函数中,你可以迭代这个数组

答案 7 :(得分:0)

NO。 但它可能在C ++ / C#中(使用默认值分配参数) 例如。 :

public void getAllSongs(String one, String two=string.Empty, String Three=string.Empty){
dosomething
}
getAllSongs("tada");

但另外,你可以使用Pattern

    public void getAllSongs(String one, String two, String Three){
        dosomething
        }
    public void getAllSongs(String one, String two){
        getAllSongs(one,two,"");
        }
    public void getAllSongs(String one){
        getAllSongs(one,"","");
        }
        getAllSongs("tada");