Я пытаюсь добавить карты в список, используя имя их класса, а затем хочу вызвать один из их методов. Как я могу это сделать? У меня есть это на данный момент:
В карту суперкласса:
public static ArrayList<Object> CreateAllCards() throws ClassNotFoundException
{
ArrayList<Object> cardArray = new ArrayList<>();
for (int n = 0; n<cardList.length; n++)
{
if (isCardAllowedToBeCreated[n])
{
Class card = Class.forName(cardList[n]);
cardArray.add(card);
}
}
return cardArray;
}
static String[] cardList = {
"CrtAbyssalSpecter",
"CrtAirElemental",
"ArtAladdinsRing",
"SorAmbitionsCost",
"CrtAnabaShaman",
"CrtAngelOfMercy",
"CrtAngelicPage",
//...
};
}
Где-то еще, мой основной:
public static void main(String[] args) throws ClassNotFoundException {
ArrayList<Object> cardList = Card.CreateAllCards();
for (int n=0; n<cardList.size(); n++)
{
if (cardList.get(n) instanceof Creature)
{
// How to call a specific method?
}
}
}
Кроме того, есть ли способ напрямую создать массив карт с использованием каждого имени карты, а не создавать массив объектов (по каждому имени карты), как я?
Card
? Являются ли CrtAbyssalSpecter, CrtAirElemental и т. д. подклассамиCard
? 20.07.2013