我的意思是這樣的:如何在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中稱爲「方法」的函數必須是一個類型的成員,您不會顯示。除此之外,你可以通過做你所做的事來做你想做的事情,聲明在不同類型上運行的函數版本。 –
函數聲明中的變量名稱是佔位符,由函數在內部使用,但對其客戶端沒有任何命名要求。 –