Расширение Java ArrayList

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

16
задан Community 23 May 2017 в 11:54
поделиться