それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Java で ArrayList を拡張する。

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ってそうだったんだ。いままでなんとなくキャストしてたと思う。