迭代方法参数

这是一个简单而且微不足道的问题:在Java中如何迭代传递给我正在工作的方法的参数?

我需要它trim()所有字符串。

编辑

更准确地说,一个使用的例子可以是这个(用伪代码编写,反映我希望它如何工作):

 public void methodName(String arg1, int arg2, int arg3, String arg4, double arg5) for(Object obj : getThisMethod().getParameters() ) System.out.println(obj.getName() + " = " + obj.toString()) 

重点是getThisMethod().getParameters() 。 我该在那个地方写什么?

各个参数不可迭代; 你需要一个集合。

如果他们是单独的弦乐,你只需要拿一把铲子。

如果你有这么多的String参数,这是压迫性的,也许你的方法需要重新考虑。 所有这些参数都应该封装到一个对象中,因为它们是相关的,或者该方法试图做太多。 这说明我缺乏凝聚力。

如果你的函数使用Varargs,这非常简单:

 private void yourFunction(String... parameters) { for (String parameter : parameters) { // Do something with parameter } } 

您尝试解决的任务只能使用AOP(面向方面​​编程)框架。

AOP框架允许您在不更改方法的情况下向方法添加一些代码。 实际上,他们创建了代理类,它们围绕原始类并在每个绑定它们的方法之前执行所需的代码行。

但是,AOP对于一些简单的任务来说太过分了,因为它通常需要一些复杂的配置,并且通常需要与DI框架集成。

如果您仍然感兴趣,请参阅以下AOP框架列表: http : //java-source.net/open-source/aspect-oriented-frameworks 。

编辑:

实际上,我认为你在第一时间以错误的方式完成任务。 如果您的方法是业务层的一部分 – 它不应该允许非修剪参数,并在这种情况下抛出某种exception。 如果您的方法是某个表示层的一部分 – 它应该手动清理参数,通常在它从用户读取参数的部分附近。

例如,如果您正在从某些Swing表单中读取该参数,那么您应该在传递给构造函数之前修剪它们。 例如:

您当前的代码:

 int someId = Integer.valueOf(idField.getText()); String someName = nameField.getText(); String someArg = argField.getText(); new Constructor(someId, someName, someArg) 

如何处理:

 int someId = Integer.valueOf(idField.getText()); String someName = nameField.getText().trim(); String someArg = argField.getText().trim(); new Constructor(someId, someName, someArg) 

因为您可以将您的方法更改为以下,您可以迭代它们。

 public void method(String... args) 

如果您的问题是如何识别Object中的String,您可以这样做:

 if (myObject instanceof String) { // My param is a string! }