迭代方法参数

时间:2010-12-10 10:51:17

标签: java parameters methods

这是一个简单而且微不足道的问题:在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()。我必须在那个地方写些什么?

5 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:3)

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

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

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

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

修改

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

例如,如果您正在从某些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)

答案 3 :(得分:0)

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

public void method(String... args)

答案 4 :(得分:0)

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

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