「Java」ジェネリクスクラスにワイルドカードを使用する

2022年3月16日

環境
JDK1.8
Eclipse 2019

書式
1.ジェネリクスクラスの定義
class クラス名<T> {処理コード}

2.ワイルドカード(?)を使用
クラス名<?> cftA = new クラス名<>(String型引数);
クラス名<?> cftA = new クラス名<>(Integer型引数);
ワイルドカード(?)は、コンパイル時に型が不明です。
引数の値は文字列型(数値型)を指定します。

使用例

package com.arkgame.Test;

//ジェネリクスクラスの定義
class Test<T> {
      T tA;

      // コンストラクタ
      public Test(T tt) {
            this.tA = tt;
      }

      // メソッドgetFunc
      public T getFunc() {
            return tA;
      }

}

public class WildCardDemo {
      // String型定数
      public static final String TARGET = "study skill";
      // Integer型定数
      public static final Integer AGE = 25;

      public static void main(String[] args) {
            // ワイルドカード(?) String型を指定
            Test<?> cftA = new Test<>(TARGET);
            System.out.println(cftA.getFunc());

            // ワイルドカード(?) Integer型を指定
            Test<?> cftB = new Test<>(AGE);
            System.out.println(cftB.getFunc());

      }

}

実行結果

study skill
25

 

Java

Posted by arkgame