我不知道这有多简单,或者是否有可能,但我似乎无法找到任何相关信息。对于方法,有一种方法可以设置多个参数。
例如,在这个public void中,当你在java文件中调用该方法时,需要调用一个组件和字符串。
public void testMethod(Component c, String s)
{
//Do Something
}
有没有办法说出public void testMethod(Component c, String d)
或public void testMethod(Component c, int i)
,并且在调用方法时可以指定其中一个?
答案 0 :(得分:3)
它被称为方法重载。只需将它们创建为单独的方法,编译器将(通常)根据您的输入值推断出正确的方法。
答案 1 :(得分:2)
是的,这是可能的,是一个重要的概念。这种特殊技术称为函数重载。假设您声明了两个函数,如:
public void testMethod(Component c, String d) {} //function 1
和
public void testMethod(Component c, int d) {} //function 2
然后,您可以从main调用这些函数:
testMethod(c,"Hello") //calls function 1
testMethod(c,1) //calls function 2
答案 2 :(得分:1)
它被称为"方法重载"。只要参数不同,任何两个方法都可以具有相同的名称。例如:
public void doStuff(String string, int integer) {}
public void doStuff(Object object, float flt) {}
这也适用于构造函数:
public Thing(String name, int id) {}
public Thing(Object object, long id) {}
但是,请举例说明以下两种方法:
public void doStuff(String string) {}
public void doStuff(Object object) {}
现在,调用方法doStuff(null)
。编译器无法推断使用哪一个;在这种情况下,您将收到编译错误。这也发生在构造函数中(只是为了让它不受影响,构造函数与方法几乎相同)。
答案 3 :(得分:0)
简单地说,你可以。
public void testFunction(Component c, String s) {
// Handle on a string
}
public void testFunction(Component c, int i) {
// Handle on integer
}
这称为方法重载。无论哪种类型传递都会导致函数调用使用适当的方法。参数的顺序仍然很重要。