「Java」ジェネリクス(Generics)クラスにextendsを使用する

環境
JDK1.8
Eclipse 2019

書式
class クラス名<T extends Number> {処理コード
extendsを使用して型はNumberクラスまたはNumberのサブクラスという制限をつけています。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.Test;
//NumberクラスとNumberのサブクラスを継承
class TestA<T extends Number> {
T tt;
// コンストラクタ
public TestA(T tt) {
this.tt = tt;
}
// setFuncメソッド
public void setFunc(T tt) {
this.tt = tt;
}
// getFuncメソッド
public T getFunc() {
return tt;
}
}
public class ExtendsDemo {
public static void main(String[] args) {
//ジェネリクスクラスのインスタンス生成
TestA<Integer> ta = new TestA<>(56);
System.out.println("コンストラクタで変数の値: " + ta.getFunc());
ta.setFunc(99);
System.out.println("メソッドで変数の値: " + ta.getFunc());
}
}
package com.arkgame.Test; //NumberクラスとNumberのサブクラスを継承 class TestA<T extends Number> { T tt; // コンストラクタ public TestA(T tt) { this.tt = tt; } // setFuncメソッド public void setFunc(T tt) { this.tt = tt; } // getFuncメソッド public T getFunc() { return tt; } } public class ExtendsDemo { public static void main(String[] args) { //ジェネリクスクラスのインスタンス生成 TestA<Integer> ta = new TestA<>(56); System.out.println("コンストラクタで変数の値: " + ta.getFunc()); ta.setFunc(99); System.out.println("メソッドで変数の値: " + ta.getFunc()); } }
package com.arkgame.Test;

//NumberクラスとNumberのサブクラスを継承
class TestA<T extends Number> {
      T tt;

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

      // setFuncメソッド
      public void setFunc(T tt) {
            this.tt = tt;
      }

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

public class ExtendsDemo {

      public static void main(String[] args) {
            //ジェネリクスクラスのインスタンス生成
            TestA<Integer> ta = new TestA<>(56);
            System.out.println("コンストラクタで変数の値: " + ta.getFunc());

            ta.setFunc(99);
            System.out.println("メソッドで変数の値: " + ta.getFunc());

      }

}

実行結果
コンストラクタで変数の値: 56
メソッドで変数の値: 99

Java

Posted by arkgame