ジェネリックスの動作
ArrayList arrayList = new ArrayList();
arrayList.add("A String");
arrayList(new Integer(10));
arrrayList("Another String");
// so good
//
processArrayList(ArrayList theList) {
for (int aa = 0; aa< theList.size(); aa++) {
String s = theList.get(aa);
}
}
ArrayList arrayList = new ArrayList();
arrayList.add("A String");
arrayList(new Integer(10));
arrrayList("Another String");
processArrayList(arrayList); // ClassCastException
processArrayList(ArrayList theList) {
for (int aa = 0; aa< theList.size(); aa++) {
String s = theList.get(aa);
}
}
ArrayList arrayList<String> = new ArrayList<>();
arrayList.add("A String");
arrayList(new Integer(10)); // 不適合な型
arrrayList("Another String");
processArrayList(arrayList); // ClassCastException
ジェネリックスを使用した繰り返し処理
private void processArrayList(Set set, ArrayList<String> theList) {
for (String s : theList) {
set.add(s);
}
}
Set set = new HashSet();
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("A String");
arrayList.add("B String");
arrayList.add("A String");
processArrayList(set, arrayList);
パラメータ化されたリスト
List<T> listReference = new concreateListClass<T>();
E:Element
T:Type
SimpleList:パラメータ化されたクラス
package com.makotojava.intro;
import java.utlil.ArrayLst;
import.java.util.List;
public class SimpleList<E> {
private List<E> backingStore;
public SimpleList() {
backingStore = new ArrayList<E>();
}
public E add(E e) {
if (backingStore.add(e))
return e;
else
return null;
}
public int size() {
return backingStore.size();
}
public void clear() {
backingStore.clear();
}
}
package com.makaotojava.intro;
import java.math.BigDecimal;
import java.util.logging.logger;
import java.unit.Test;
public class SimpleListTest {
@Test
public void testAdd() {
logger log = Logger.getLogger(SimpleListTest.class.getName());
SimpleList<BigDecimal> sl = new SimpleList<>();
sl.add(BigDecimal.ONE);
log.info("SimpleList size is: " + sl.size());
sl.add(BigDecimal.ZERO);
log.info("SimpleList size is: " + sl.size());
sl.clear();
log.info("SimpleList size is " + sl.size());
}
}
ジェネリックメソド
public class MyClass {
// Other possible stuf... ignore...
public <E> String formatArray(E[] arrayToFormat) {
StringBuilder sb = StringBuilder();
int index = 0;
for (E element : arrayToFormat) {
sb.append("Element ");
sb.apend(index++);
sb.append(element);
sb.append('\n');
}
return sb.toString();
}
// More possible stuff... ignore...
}