我的意思是这样的:如何在Java中创建一个可用多种类型调用的函数?
function f(int a) {
}
function f(double a) {
}
function f(string a) {
}
我想要一个可以使用相同的名称(f
)和相同的变量的名称(a
)被调用的函数,但不是同一个类型(int
,double
等)
谢谢!
我的意思是这样的:如何在Java中创建一个可用多种类型调用的函数?
function f(int a) {
}
function f(double a) {
}
function f(string a) {
}
我想要一个可以使用相同的名称(f
)和相同的变量的名称(a
)被调用的函数,但不是同一个类型(int
,double
等)
谢谢!
你要找的仿制药:
实例方法:
public <T> void f(T a) { // T can be any type
System.out.println(a); // test to see `a` is printed
// Do something..
}
类方法:
public static <T> void f(T a) { // T can be any type
System.out.println(a); // test to see `a` is printed
// Do something..
}
假设这是您的main
方法里面,你可以调用类的方法是这样的:
实施例1:
int number = 10;
f(number);
实施例2:
String str = "hello world";
f(str);
实施例3:
char myChar = 'H';
f(myChar);
实施例4:
double floatNumber = 10.00;
f(floatNumber);
和任何其他类型。
深入阅读Generics。
他们可能正在寻找仿制药。或者他们可能在寻找重载。或者他们可能正在寻找函数引用。或者他们可能正在寻找lambdas,这将涉及泛型,但对于已经在Java API中的Interfaces。 –
@LewBloch我当然同意你的意见,但我不可能向他建议所有可能的想法。这个答案似乎是我在问问题时想到的。不过谢谢。 –
@LewBloch此外,如果您有任何建议可以更好地回答问题,请随时编辑,如果我觉得合适,我会接受。 –
Java类可以有同名的方法,但不同的参数类型,就像你问的。
public class Foo {
public void f(int a){
System.out.println(a);
}
public void f(double a){
System.out.println(a);
}
public void f(String a){
System.out.println(a);
}
public static void main(String[] args) throws InterruptedException{
Foo f = new Foo();
f.f(9.0);
f.f(3);
f.f("Hello world!");
}
}
这就是你所说的重载方法。 – msagala25
你不要用关键字'function'在Java中声明函数。如果这意味着返回类型,那么类型名称应遵循Java命名约定。在Java中称为“方法”的函数必须是一个类型的成员,您不会显示。除此之外,你可以通过做你所做的事来做你想做的事情,声明在不同类型上运行的函数版本。 –
函数声明中的变量名称是占位符,由函数在内部使用,但对其客户端没有任何命名要求。 –