Jaki jest najlepszy sposób użycia tego jako klasy bazowej dla klasy podobnej do Enum. Chciałbym móc tworzyć różne typy betonu bez konieczności ponownego kodowania metod pobierających.Wydziel klasy bazowe w języku Java
public enum Tool extends Item
{
Pickaxe("Pickaxe", 101),
Saw("Saw", 201);
}
Narzędzie Tool.getNames() zwróci listę wszystkich nazw elementów w klasie 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;
}
}
Wiem, że nie jest to możliwe, ale jak mogę podejść do tej sytuacji? Chciałbym móc uzyskać dostęp do członków każdej klasy, tak jak wy to wyliczacie: Tool.Pickaxe.
Jedna podpowiedź: wyliczenia nie mogą rozszerzyć innej klasy, ale nadal mogą implementować interfejs. – skiwi
Emulatory automagicznie rozszerzają klasę "Enum". Nie mogą rozszerzyć klasy. Użyj interfejsu. – MathSquared
Implementacja interfejsu oznacza, że nadal będę musiał kodować metody dla każdej podklasy. Chcę tego jakoś uniknąć. –