「Java」ジェネリクス(Generics)クラスにextendsを使用する
環境
JDK1.8
Eclipse 2019
書式
class クラス名<T extends Number> {処理コード
extendsを使用して型はNumberクラスまたはNumberのサブクラスという制限をつけています。
使用例
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