6

これを Enum のようなクラスの基本クラスとして使用する最良の方法は何ですか。ゲッター メソッドを再コーディングすることなく、さまざまな具象型を作成できるようにしたいと考えています。

public enum Tool extends Item
{
    Pickaxe("Pickaxe", 101),
    Saw("Saw", 201);
}

また、Tool.getNames() は、Tool クラス内のすべてのアイテム名のリストを返します。

public enum Item
{
    Default("Name", 0);

    private final int id;
    private final String name;

    Item(String name, int id)
    {
        this.id = id;
        this.name = name;
    }

    public int getId()
    {
        return this.id;
    }

    public int[] getIds()
    {
        Item[] items = Item.values();
        int[] ids = new int[items.length];
        for (int i = 0; i < items.length; i++)
        {
            ids[i] = items[i].getId();
        }
        return ids;
    }

    public String getName()
    {
        return this.name;
    }

    public String[] getNames()
    {
        Item[] items = Item.values();
        String[] names = new String[items.length];
        for (int i = 0; i < items.length; i++)
        {
            names[i] = items[i].getName();
        }
        return names;
    }
}

このようなことは不可能であることはわかっていますが、どうすればこの状況にアプローチできますか? 列挙型と同じように、各クラスのメンバーにアクセスできるようにしたいと思います: Tool.Pickaxe.

4

2 に答える 2