Javaジェネリックプログラミングを使用してクラスを実装することと、型を一般的なオブジェクトクラスとして保持することの間に、大きな利点/欠点があるかどうか疑問に思っていましたか? たぶん、以下のコードは私が探しているものを明確にしますか?
この最初のコードは、一般的な Object クラス型を使用してリストを実装する方法を示しています。
public class myList {
private static int DEFAULT_CAPACITY = 16;
private int size, capacity;
private Object[] dataArray;
myList(){
this(DEFAULT_CAPACITY);
}
myList(int defaultSize){
capacity = defaultSize;
size = 0;
dataArray =new Object[defaultSize];
}
public int getSize(){return size;}
public void insert(int loc, Object o){
if (size+1 <= capacity){
for (int i=size; i> loc-1; i--)
dataArray[i] = dataArray[i-1];
dataArray[loc-1] = o;
size++;
}
}
public Object getItem(int loc){
return dataArray[loc-1];
}
}
次のコードは、Java 汎用プログラミングを使用した同じ機能を示しています。
public class MyList<E> {
private int size = 0;
private static final int DEFAULT_CAPACITY = 10;
private Object dataArray[];
public MyList() {
dataArray = new Object[DEFAULT_CAPACITY];
}
public void insert(int loc, E e) {
if (size+1 <= capacity){
for (int i=size; i> loc-1; i--)
dataArray[i] = dataArray[i-1];
dataArray[loc-1] = e;
size++;
}
}
public E get(int loc) {
return (E) elements[loc-1];
}
}