Java 入門

ホーム > ジェネリックス > スーパータイプ バウンド

スーパータイプ バウンド

前回、サブクラスをワイルドカードで指定する方法を説明しました。

この他、Java にはスーパークラスをワイルドカードで指定する方法もあります。

すなわち、「このクラスのスーパークラスなら何でも」という指定方法です。

この場合は、次のようにワイルドカード (?) と super というキーワードで表現します。

<? super クラス名>

この方法ではクラス階層の上方への型指定、すなわち「スーパークラス」の指定となるので、スーパータイプ バウンド (supertype bound) という言い方をします。

図でまとめてみよう

さて、extends、super によるワイルドカード指定について図であらわして、理解を確認しましょう。

次のようなクラス階層があったとします。(かなり大雑把ですが・・・)


基本となるクラス階層

そこで、この時に <? extends "PC Device"> に含まれるクラスは以下の緑で塗りつぶしたクラス全部です。


? extends による指定

一方、スーパーバウンドによる指定は情報へクラス階層のツリーを登りますから、
<? super "Input Device"> に含まれるクラスは以下の緑色のクラスだけです。


? super による指定

このように、クラスツリーの上方にも下方にも型を指定することが可能です。

ホーム > ジェネリックス > スーパータイプ バウンド