**Short、Integer の -128~127
*ボックス化、拡大変換、Var-Argの優先度
<<優先度(高)>>
拡大変換
↑
↑
Var-Arg
<<優先度(低)>>
*int → long → Long : 拡大変換 → ボックス化はNG
*int → Integer → Number : ボックス化 → 拡大変換 はOK
*非常に単純なアサーション
private void test() {
assert (y > > x); // y > > x を仮定
}
*単純なアサーション
private void test() {
assert (y > > x): "y is " + y + " x is " + x; // y > > x を仮定
}
*あるクラスのアサーションを無効にして、他を有効にする
a[0] = new Deriv2(); // ArrayStoreException が投げられる
*<> <> で囲まれた型は、ジェネリックス型、ジェネリックス型が適用された型をベース型
{|class="wikitable"
!型
|}
ArrayList<<Number> > l = new ArrayList<<Integer>>(); //NG List<<Integer> > l2 = new ArrayList<<Integer>>(); //OK
*ジェネリックスを利用したベース型の要素格納等には当然多態性を利用できる
List<<Number> > l = new ArrayList<<Number>>();
l.add(new Integer(1)); // OK
l.add(new Long(2)); // OK
*多態性を利用して、統一的に処理を行いたい(基底クラスが提供するメソッドを呼び出したい等)場合は、ワイルドカード+extendを利用する
*引数型を、List<<? extend Clazz> > とすることで、 '''IS-A Cazz''' にパスする任意のジェネリックス型のリストを渡すことができる。
*このリストに要素を追加することはできない。(実際の型が何であるか不明なため)
*削除操作などは可能。
public void m(List<<? extends Number> > lst) {
lst.add(new Integer(1)); // 追加はNG
lst.remove(1); // 削除はOK
* 多態性を利用して、基底クラスの参照に、派生クラスを格納したいような場合は、ワイルドカード+superを利用する。
* 引数型を、List<<? super Clazz> > とすることで、'''Cazz IS-A ?''' にパスする任意のジェネリックス型のリストを渡すことができる。
* 渡された側では、ジェネリックス型に代入互換性があるクラスを追加することができる。