2017-03-17 5 views
2

私が意味することは、このようなものです:Javaで関数を作成するにはどうすればいいですか?多くの型で呼び出すことができますか?

function f(int a) { 

} 
function f(double a) { 

} 
function f(string a) { 

} 

私は、同じ名前(f)と同じ変数の名前(a)を呼び出すことができる機能を作りたいではなく、同じ種類(intdoubleなど)

THANKS!あなたはジェネリック医薬品を探している

+0

これはメソッドオーバーロードです。 – msagala25

+0

Javaの関数を 'function'というキーワードで宣言しません。戻り値の型として意図されていた場合、型名はJavaの命名規則に従うべきです。 Javaの「メソッド」と呼ばれる関数は、表示されないタイプのメンバーでなければなりません。それ以外にも、あなたがやったことをやり、さまざまなタイプで動作する関数のバージョンを宣言して、あなたが望むことをすることができます。 –

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

および他の任意のタイプ。

さらに読むGenerics

Java Documentation of Generics

+1

彼らはジェネリック医薬品を探しているかもしれません。あるいは、過負荷を探しているかもしれません。あるいは、関数参照を探しているかもしれません。あるいは、ジェネリックスを含むラムダを探しているかもしれないが、既にJava APIに入っているInterfacesについてはそうである。 –

+0

@LewBloch私は確かにあなたに同意しますが、彼に可能性のあるアイデアをすべて示唆することはできませんでした。この答えは、質問が尋ねられたときに私が思ったことのようです。それでも、ありがとう。 –

+0

@LewBlochまた、答えをより良くするための提案があれば、それを編集してみてください。 –

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

} 
関連する問題