Я хотел бы расширить 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 {
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);
}
}
}