Java - Création d'un tableau de méthodes
Je suis de la conception d'un texte basé sur le jeu d'aventure pour une école de progrès. J'ai chaque "niveau" mis en place en tant que classe, et chaque zone d'exploration (nœud) comme une méthode dans la classe appropriée.
Ce qui est de jouer avec moi, c'est le code pour passer d'un nœud à un autre. Parce que chaque nœud est relié à quatre autres nœuds, je dois répéter une très similaires bloc de code dans chaque méthode.
Ce que je préfère faire est d'inclure un éventail de méthodes, au début de chaque nœud, comme ceci:
public static void zero()
{
... adjacentNodes[] = {one(), two(), three(), four()};
}
Et envoyer ensuite le tableau à une méthode générique, et d'envoyer le joueur à la droite du nœud:
public static void move(...[] adjacentNodes, int index)
{
adjacentNodes[index];
}
J'ai simplifié mon code, mais c'est l'idée générale. Est-ce possible?
Quelles sont les signatures de méthode de
one()
, two()
etc?OriginalL'auteur Jason Baker | 2010-11-25
Vous devez vous connecter pour publier un commentaire.
Chaque fois que vous pensez de pointeur de fonction, vous le traduire en Java en utilisant l'Adaptateur (ou une variante). Il serait quelque chose comme ceci:
Il a parfaitement fonctionné; je vous remercie beaucoup pour votre aide!
Notez que cet exemple crée 4
MoveActions
parNode
instance. En repensant à cette mise en œuvre un peu, vous pourriez faireMoveAction
objets partageables pour toutes les instances. Dans ce cas, il serait impliquent une modification de lamove()
àmove(Node)
, mettre en œuvre les 4MoveAction
que de classes statiques, et en passantthis
dans l'appel àmove()
.Merci beaucoup, a beaucoup aidé !
Merci de donner l'INTÉGRALITÉ de l'exemple de code.
OriginalL'auteur gpeche
Juste avoir votre nœuds être des objets qui tous répondent à la même interface, alors vous serez en mesure d'appeler leurs méthodes de manière fiable.
OriginalL'auteur Fredrick Pennachi
Depuis Java n'est pas le concept de méthodes comme des entités de première classe, c'est seulement possible à l'aide de la réflexion, ce qui est douloureux et sujette à erreur.
La meilleure approximation serait probablement pour avoir les niveaux comme les énumérations avec par exemple la mise en œuvre d'une méthode:
Cependant, c'est un peu un abus de l'enum concept. Je ne voudrais pas l'utiliser pour un projet sérieux.
Ai eu de travail; merci beaucoup
OriginalL'auteur Michael Borgwardt
Votre conception a des lacunes fondamentales. Normal OO conception aurait à chaque "niveau" d'un objet (de la Classe "niveau" ou quelque chose comme ça). chaque "zone d'exploration' serait également un objet, contenu dans le niveau de l'objet peut-être de la classe ExplorableArea. Les " zones d'exploration peuvent être de différents types, auquel cas vous les faire de différentes sous-classes de ExplorableArea.
OriginalL'auteur DJClayworth
Essayer de penser à des solutions sans réflexion. C'est peut être les enums, par exemple.
OriginalL'auteur Stan Kurilin
Vous pouvez utiliser la Réflexion de la classe pour créer un éventail de méthodes.
http://java.sun.com/developer/technicalArticles/ALT/Reflection/
OriginalL'auteur bhavinp