Я хотел бы расширить ArrayList, чтобы добавить несколько методов для определенного класса, экземпляры которого будут храниться расширенным ArrayList. Ниже приведен упрощенный пример кода примера.
Это кажется мне разумным, но я очень новичок в Java, и я вижу другие вопросы, которые препятствуют расширению ArrayList, например Расширение ArrayList и Создание новых методов. Я не знаю достаточно Java, чтобы понять возражения.
В моей предыдущей попытке я закончил создание ряда методов в ThingContainer, которые были по существу сквозными передачами в ArrayList, поэтому расширение оказалось проще.
Есть ли лучший способ сделать то, что я пытаюсь сделать? Если да, то как это должно быть реализовано?
import java.util.*;
class Thing {
public String name;
public int amt;
public Thing(String name, int amt) {
this.name = name;
this.amt = amt;
}
public String toString() {
return String.format("%s: %d", name, amt);
}
public int getAmt() {
return amt;
}
}
class ThingContainer extends ArrayList<Thing> {
public void report() {
for(int i=0; i < size(); i++) {
System.out.println(get(i));
}
}
public int total() {
int tot = 0;
for(int i=0; i < size(); i++) {
tot += ((Thing)get(i)).getAmt();
}
return tot;
}
}
public class Tester {
public static void main(String[] args) {
ThingContainer blue = new ThingContainer();
Thing a = new Thing("A", 2);
Thing b = new Thing("B", 4);
blue.add(a);
blue.add(b);
blue.report();
System.out.println(blue.total());
for (Thing tc: blue) {
System.out.println(tc);
}
}
}