我们可以在Java中使用varargs进行空验证吗?

时间:2014-02-18 11:14:17

标签: java variadic-functions

任何人都可以告诉我在java中使用varargs方法吗?

并且,我要求在html中有太多字段,所以我们可以使用vararg方法进行空验证,如果可能的话请告诉我怎么做?

2 个答案:

答案 0 :(得分:1)

这是一个演示:

public void myVarargsMethod(MyObject... objects) {
    if (objects.length() == 0) {

         // No parameters passed to the method...

    } else {

         for(MyObject mo : objects) {
            if (mo==null) {
                // Process null value ...
            } else {
                // Process MyObject instance...
            }
         }

    }
}

答案 1 :(得分:0)

有时您希望可以使用任意数量的参数创建方法。一个典型的例子是日志记录功能,它使用任意数量的占位符获取模板:

 logger.log("%s: %s" , "Input", "Hello world");
 logger.log("%s: %s %s", "Input", "Hello", "world");

显示log()被调用3和4个参数,您可以通过编写多个版本来支持它:

 void log(String pattern, String val1, String val2) { ... }
 void log(String pattern, String val1, String val2, String val3) { ... }

...在Java的早期版本中,人们做到了这一点,但显然你不能继续添加更长的版本,并且在某些时候你会说“好吧,这很傻”,并提供:

 void log(String pattern, String[] values) { ... }

......这样称呼:

 logger.log("%s: %s", new String[] { "Hello", "world" });

Varargs提供了一种语法,允许调用者提供尽可能多的参数。

 void log(String pattern, String... values) {
       // implementation sees values as a String[]
 }

...使用此版本,调用者不需要显式创建数组。可以使用任意数量的尾随参数调用它:

 logger.log("%s %s %s %s %s %s %s", 
       "The", "quality", "of", "mercy", "is", "not", "strained.");

我没有看到varargs和HTML字段验证之间有任何特殊的关联。