Java Generics使い方 - Genericsメソッドを定義してみる

2009/02/20 16:02Update
TAGS: Generics | Java | 総称型 | メソッド | サンプル | コード

サンプルからJava Genericsの使い方:Genericsメソッドの定義方法について学びます。

とりあえず、サンプルから見てみます。

public class TestGenericsMethod {
    public static void main(String[] args) {
        TestGenericsMethod test = new TestGenericsMethod();
        
        System.out.println("Genericsメソッド:public <T> void method1(T value1)");
        test.method1("100");    //パラメータにString文字列
        test.method1(new Integer(200));   //パラメータにInteger型
        
        System.out.println("Genericsメソッド:public <T> T method2(T value1, T value2)");
        String ret1 = test.method2("300", "400");    //パラメータにString文字列、戻り値もStringになる
        Boolean ret2 = test.method2(Boolean.TRUE, Boolean.FALSE);    //パラメータにBoolean型、戻り値もBooleanになる
        System.out.println(ret1);
        System.out.println(ret2);
        
        System.out.println("Genericsメソッド:public <T1, T2> String method3(T1 value1, T2 value2)");
        String ret3 = test.method3("500", Boolean.TRUE);    //パラメータにString文字列型とBoolean型
        String ret4 = test.method3(new Integer(600), Boolean.TRUE);    //パラメータにInteger型とBoolean型
        System.out.println(ret3);
        System.out.println(ret4);
    }
    
    //戻り値なしのGenericsメソッド
    public <T> void method1(T value1) {
        System.out.println("medhod1:" + value1.toString());
    }

    //戻り値がある、パラメータ型に同じGenerics型でである メソッド
    public <T> T method2(T value1, T value2)  {
        if (value2 != null) {
            return value2;
        }
        
        return value1;
    }

    //戻り値がある、パラメータ型に複数のGenerics型でである メソッド
    public <T1, T2> String method3(T1 value1, T2 value2)  {
        if (value2 != null) {
            return value2.toString();
        } else if (value1 != null) {
            return value1.toString();
        }
        
        return null;
    }
}


実行結果:

Genericsメソッド:public <T> void method1(T value1)
medhod1:100
medhod1:200
Genericsメソッド:public <T> T method2(T value1, T value2)
400
false
Genericsメソッド:public <T1, T2> String method3(T1 value1, T2 value2)
true
true

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation