ジェネリックのクラスとメソッド
//この例ではClassSampleクラス名に続けて「<T>」を記述しています。
//この「<T>」を記述することで、データ型の指定がObject型からT型(型変数)に変更されます。
import java.util.*;
class ClassSample<a>{
private a t;
public ClassSample(a t){
this.t = t;
}
public a getT(){
return t;
}
}
public class Main {
//ジェネリックメソッド
private static <T> T getT(T t){
return t;
}
public static void main(String[] args) throws Exception {
// Your code here!
// String型として利用可能 <a型がストリング型に置き換わるイメージ>
ClassSample<String> cs1 = new ClassSample<String>("Hello");
String str = cs1.getT();
System.out.println(str);
// Integer型として利用可能
ClassSample<Integer> cs2 = new ClassSample<Integer>(1);
Integer i = cs2.getT();
System.out.println(i);
// ワイルドカードを使用 Number型として利用可能
ClassSample<? extends Number> cs3;
cs3 = cs2;
Number n = cs3.getT();
System.out.println(n);
// ワイルドカードを使用 Object型として利用可能上記の逆
ClassSample<Number> cs4 = new ClassSample<Number>(1);
ClassSample<? super Integer> cs5;
cs5 = cs4;
Object o = cs5.getT();
System.out.println(o);
// ジェネリックメソッドの実行 なんでも引数OK
//ジェネリクスはメソッドに対しても使用することができます。
//メソッドを定義する際に戻り値の型名であるTの前に「<T>」句を記述する必要があります。
//こちらもサンプルコードでみていきましょう
String str = getT("Hello");
System.out.println(str);
Integer i = getT(1);
System.out.println(i);
}
}
Author And Source
この問題について(ジェネリックのクラスとメソッド), 我々は、より多くの情報をここで見つけました https://qiita.com/jtths474/items/f72ecaea541a03c2cf9f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .