C'est une question simple et peut-être triviale: en Java Comment puis-je itération à travers les paramètres passés à la méthode où je travaille?
J'en ai besoin de Le point est que CORRED () CODE> Tous qui sont des chaînes. p>
getthismethod (). getParameters () code>. Que dois-je écrire à cet endroit? P> p>
5 Réponses :
Les paramètres individuels ne sont pas propres; Vous auriez besoin d'une collection pour cela. p>
Vous devrez simplement avoir une pelle si elles sont des chaînes individuelles. P>
Si vous avez tellement de paramètres de chaîne que cela est oppressant, votre méthode doit peut-être être re-pensée. Soit tous ces paramètres doivent être encapsulés dans un objet, car ils sont liés ou cette méthode tente de faire trop. Cela témoigne d'un manque de cohésion pour moi. P>
Merci! Étant donné que votre réponse semble la plus correcte, même si elle est désillusionnée :) Cependant, ma méthode est un constructeur, je lui passe de nombreux champs qui doivent être enregistrés dans un enregistrement DB. Je me demande: Qu'est-ce qu'une "pelle"? Jamais entendu dire qu'il était associé à Java ..
"Obtenez une pelle" est une expression qui signifie "rouler tes manches et faire du travail". Il sort généralement lorsqu'un développeur est confronté à une vaste tâche fastidieuse qui nécessite un effort long et une patience à compléter plutôt que la puissance cérébrale brute.
car vous pouvez modifier votre méthode pour être les suivantes que vous pouvez itérez sur eux.
public void method(String... args)
... Tant que les cordes dont le PO parle devrait être considéré comme un groupe. L'OP ne devrait pas les emballer ensemble simplement pour pouvoir être capable de pouvoir y parcourir.
Peu plus agréable, mais aussi une solution de défaillance épique serait de passer une carte des paramètres et de l'itéraire :)
@Bert, c'est vrai. Cependant, avoir besoin de couper () toutes les chaînes suggérées, il pourrait s'agir d'un groupe de cordes.
Accord absolu - Pas de NIT pour votre réponse - Vous m'avez battu à cette même réponse :). Je voulais juste contribuer à une contrepartie d'un OP potentiellement bizarre.
@Bert, il valait la peine de mentionner.
Si votre question est de savoir comment reconnaître une chaîne d'un objet, vous pouvez le faire:
if (myObject instanceof String) { // My param is a string! }
Si votre fonction utilise Varargs Ceci est assez simple:
... Tant que les cordes, le PO parle de devrait être considéré comme un groupe. L'OP ne devrait pas les emballer ensemble simplement pour pouvoir être capable de pouvoir y parcourir.
Je ne peux pas l'utiliser car mes paramètres ont besoin d'un nom différent de chacun. En utilisant un tableau ou similaire compliquerait la situation.
La tâche que vous essayez de résoudre n'est possible qu'à l'aide de cadres AOP (PROGRAMMATION APPORTÉE).
AOP Frameworks vous permet d'ajouter du code à la méthode sans le changer. En réalité, ils créent des classes de proxy qui enveloppent vos classes d'origine et exécutent les lignes de code requises avant chaque méthode que vous les liez également. P>
Cependant, AOP est une overcilleuse pour certaines tâches simples, car elle nécessite généralement des configurations complexes. et généralement l'intégration avec des frameworks di. P>
Voici une liste des cadres d'AOP si vous êtes toujours intéressé: http://java-source.net/open-source/aspect-oriented-framewrakeworks . p>
edit: strong> p > En fait, je pense que vous faites votre tâche dans la mauvaise façon de la première place. Si votre méthode fait partie de la couche d'entreprise - elle ne doit pas autoriser les paramètres non coupés et jeter une sorte d'exception dans ce cas. Si votre méthode fait partie d'une couche de présentation - il doit nettoyer les paramètres manuellement, généralement près de la pièce où il lit les paramètres de l'utilisateur. P> Par exemple, si vous lisez ce paramètre de certains paramètres Formulaire, alors vous devriez les couper avant de passer à votre constructeur. Par exemple: p> Votre code actuel: p> comment il devrait être manipulé: p> int someId = Integer.valueOf(idField.getText());
String someName = nameField.getText().trim();
String someArg = argField.getText().trim();
new Constructor(someId, someName, someArg)
Votre pièce d'édition C'est une bonne observation, merci! Cependant, j'aimerais trouver un moyen de faire exactement ce que j'ai dit. C'est comme un défi vs Java;)
Eh bien, si vous le voulez facile - Java ne peut pas faire ça. Vous ne pouvez pas itérer les paramètres de la méthode. De plus, vous ne pouvez pas accéder aux variables locales avec une réflexion non plus. Donc, la seule chose que vous puissiez faire est un AOP ou quelque chose de similaire qui peut contrôler tous les appels vers une méthode spécifique d'une classe.
Comment votre déclaration de méthode ressemble?
Pourquoi tu as besoin d'eux? Si vous connaissez le nom des paramètres, vous pouvez le faire sur très haut dans votre méthode.
Ma méthode est un constructeur simple avec de nombreux champs, mais la question est valable pour n'importe quelle méthode, dans ce que je veux faire quelque chose avec tous les paramètres. Il serait utile d'écrire un code simple et élégant et non à la modifier à chaque fois que vous ajoutez / modifier / supprimer un paramètre.