Generics導入後のJavaは余り触ってないが、Androidを触るために錆びついた知識のサビを落としてる。
ArrayListを拡張して同じ振る舞いをさせたい
//これを ArrayList<String> list = new ArrayList<String>(); //こうしたい ArrayList<String> list = new MyArrayList<String>();
特定のメソッドを上書き出来るようにしたかった。ArrayListと同じ振る舞いをしたかった
拡張方法
import java.util.*; import java.io.*; class MyArrayList<T> extends ArrayList<T>{ @Override public boolean add(T e){ return super.add(e); } }
使う
class Test{ public Test(){ } public static void main(String args[]){ ArrayList<String> list = new MyArrayList<String>(); //ArrayList<String> list = new ArrayList<String>(); list.add("a"); list.add("a1"); list.add("a2"); for( String s : list){ System.out.println(s); } } }
手元のJavacでコンパイルしたらうまく言った。
そういえば、親クラスとして変数を代入するときに、型キャスト要らないんですねぇ。Javaってそうだったんだ。いままでなんとなくキャストしてたと思う。