如何在Java中创建一个可以用多种类型调用的函数?

时间:2017-03-17 00:42:20

标签: java function class

我的意思是这样的:

function f(int a) {

}
function f(double a) {

}
function f(string a) {

}

我想创建一个可以使用相同名称(f)和相同变量名称(a)调用的函数,但不是相同的类型({{1 },int等。)

谢谢!

2 个答案:

答案 0 :(得分:5)

您正在寻找泛型:

实例方法:

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);

和任何其他类型。

进一步阅读Java Documentation of Generics

{{3}}

答案 1 :(得分:3)

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!");
    }

}