いろいろガンガンいこうぜ。体も大事に

普段はJavaでAndroidアプリ開発しているプログラマーのブログです。

ジェネリクス(総称型)について その2

Javaプログラムにおいて,型パラメータを持つクラスを定義してみました

package com.mrstar.practice_generics;

public class GenericSample<T> {
    private T mValue;

    public GenericSample(T value) {
        mValue = value;
    }

    public T getValue() {
        return mValue;
    }

    public void setValue(T value) {
        mValue = value;
    }
}

使ってみました。

GenericSample<Sample> sample0 = new GenericSample<Sample>(new Sample());
Sample value = sample0.getValue();
sample0.setValue(new Sample());
// sample0.setValue("hello"); コンパイルエラー

GenericSample<String> sample1 = new GenericSample<String>("Hello Generics.");
String value1 = sample1.getValue();
sample1.setValue("Hello World.");
// sample1.setValue(1); コンパイルエラー

使い方はこんな感じです。 次に,static メソッドの型パラメータを持つメソッドを定義して使ってみました。

package com.mrstar.practice_generics;

public class GenericStaticSample {
    public static <T> T staticFunction(T value) {
        return value;
    }
}

呼び出してみます。

Sample sample0 = GenericStaticSample.staticFunction(new Sample());
Sample sample1 = GenericStaticSample.<Sample>staticFunction(new Sample());

下の呼び方は知りませんでした。 型パラメータを指定して呼び出すこともできるんですね。