Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。

extends(境界)

ジェネリクスでは、型パラメータを宣言する際、extendsを使用して指定できるデータ型を制限できます。ここでは、extendsの使用方法について説明します。

extendsの使用方法

型パラメータを宣言する際、指定できるデータ型をextendsを使用して制限できます。<T extends A>と宣言した場合、指定できるデータ型はクラスAを継承したデータ型である必要があります。

extendsの後に指定できるクラスはJavaでは多重継承が許可されていないため、1つのみです。複数指定したい場合は&でつなげてインタフェースを指定します。

class クラス名<型パラメーター extends クラスorインタフェース & インタフェース & ・・・> { クラス本体 }

extendsで指定できるデータ型を制限した例を以下に記載します。

ShelfEクラス(ジェネリクス)

//型パラメータTに指定できるデータ型は、Nubmerクラスを継承したデータ型のみであることを宣言
public class ShelfE<T extends Number> {
  private T value;

  public void setValue (T value) {
    this.value = value;
  }

  public T getValue() {
    return value;
  }
}

Mainクラス

class Main {
  public static void main(String[] args) {
    //NumberクラスのサブクラスであるIntegerクラスをデータ型に指定。コンパイルOK。
       //Numberクラスのサブクラスではないデータ型を指定した場合はコンパイルエラー。
    ShelfE<Integer> ins1 = new ShelfE<Integer>();

    ins1.setValue(123);
    Integer i = ins1.getValue();
    System.out.println(i);
  }
}

2extends(境界)