以下の内容はhttps://rso.hateblo.jp/entry/20100705/1278306638より取得しました。


Javaのジェネリックスに関するメモ

型変数(Type Variable)

Javaにおけるジェネリック・クラス宣言で用いる型変数(Type Variable)の文法は以下のとおり

TypeParameter:
    TypeVariable TypeBoundopt
TypeBound:
    extends ClassOrInterfaceType AdditionalBoundListopt
AdditionalBoundList:
    AdditionalBound AdditionalBoundList
    AdditionalBound
AdditionalBound:
    & InterfaceType

型変数はオプションで境界を指定できるため,以下のような記述が可能である

//境界持ちの型変数
public static <T extends Object & Comparable<? super T>> T max(){
	・・・
}	

型引数(Type Arguments)

Javaにおける型引数(Type Arguments)の文法は以下のとおり

TypeArguments:
    < ActualTypeArgumentList >
ActualTypeArgumentList:
    ActualTypeArgument
ActualTypeArgumentList , ActualTypeArgument
    ActualTypeArgument:
    ReferenceType
    Wildcard
Wildcard:
    ? WildcardBoundsOpt
WildcardBounds:
    extends ReferenceType
    super ReferenceType

この文法からは以下のような記述が可能である

ArrayList<Integer> hoge//参照型
ArrayList<?> hage; //ワイルドカード
ArrayList<? extends Number> hige; //ワイルドカード+上限の境界
ArrayList<? super Integer> huge; //ワイルドカード+下限の境界

型変数にはこれらのワイルドカード,superを用いた下限の境界は指定することはできない

//public <?> void foo(){} こんなのは無い
//public <T super Integer> void bar(){} こんなのも無い



以上の内容はhttps://rso.hateblo.jp/entry/20100705/1278306638より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14