`
zhujiang520
  • 浏览: 148639 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java里实现可变参数。

阅读更多
最近才发现,java里原来也可以实现可变参数。
SE5之前,我们如果想实现可变参数的效果,可以通过一个数组或Collection
    public static void test(String [] args){
       for (int i = 0; i < args.length; i++) {
          System.out.println(args[i]);
       }
    }

如果是想不同类型的参数一起传,可以使用Collection,例如List等。
  在SE5之后,java添加了这个新功能。也很简单。 只用三个点号(...)

      public static void test(int ...objects){
        //参数都是int类型的,所以可以用foreach
	for (int object : objects) {
	   System.out.println(object);
	}
    }
    public static void main(String [] args){
        test();
        test(1);
        test(1,2,3,4,5);
    }

 
  参数类型可以是Object的。
  另外,如同ruby中一样,可变参数可以与固定的参数相结合,不过需要注意的是,如果结合使用,那么可变参数必须卸载最后面。
     public static void test(String str,Object ...objects){
	  System.out.println("str="+str);
	  for(Object obj : objects){
		System.out.println(obj);
	  }
      }
      public static void main(String [] args){
        test("abc");
        test("abc",1,"abc",88.8f);
      }

 

另外,一个方法中,只能定义一个可变参数!
  知道了这个特性以后,以后可以在项目中使用了,应该会带来一些方便。
  下面,让我们来看看具体使用的例子。
  在Collections类的addAll方法中
    /* 
     * ...
     * @since 1.5
     */
    public static <T> boolean addAll(Collection<? super T> c, T... elements) {
        boolean result = false;
        for (T element : elements)
            result |= c.add(element);
        return result;
    }


  采用了范型,所以可变参数的类型也可以使任意类型的。
  来看个例子
    public static void main(String [] args){
       Collection col = new LinkedList();	
       boolean flag = Collections.addAll(col, 123,123.0f,888.0,"float",'c');
       for(Iterator ite = col.iterator();ite.hasNext();){
	   Object obj = ite.next();
	   System.out.print(obj.getClass().getName());
	   System.out.println("   "+obj);
       }
    }



  不加范型,参数可以是任意类型的
  加上范型,参数类型即可指定
    public static void main(String [] args){
       Collection<String> col = new LinkedList<String>();	
       boolean flag = Collections.addAll(col,"int","float","string","123","char");
       for(Iterator ite = col.iterator();ite.hasNext();){
	   Object obj = ite.next();
	   System.out.println("   "+obj);
       }
    }

 
 
 
分享到:
评论

相关推荐

    java可变参数

    下面我们将详细探讨Java可变参数的概念、用法以及背后的实现原理。 ### 1. 概念与语法 Java可变参数在声明时以`...`(三个点)作为后缀,它实际上是一个数组的语法糖。例如,我们可以定义一个接受任意数量整数的...

    Java可变参数demo

    在Java编程语言中,可变参数(Variable-Argument Parameters)是一项强大的特性,它允许函数接收一个不确定数量的同类型参数。这个特性自Java 5引入,极大地提高了代码的灵活性和可读性。在这个名为"Java可变参数...

    C以及Java中可变参数列表函数定义方法

    总结来说,C语言和Java都提供了处理可变参数列表的方法,但实现机制有所不同。C语言使用了更底层的`stdarg.h`库,而Java则提供了更高级的语法特性。了解这些差异对于编写跨平台代码或者理解不同语言的底层机制至关...

    [java]中的可变参数定义和使用

    ### Java中的可变参数定义与使用详解 #### 可变参数概述 在Java编程语言中,可变参数(Varargs)是一种特殊的参数形式,允许一个方法接受任意数量的同类型参数。这种特性使得方法能够更加灵活地处理不同数量的输入...

    Kotlin传递可变长参数给Java可变参数实例代码

    在本文中,我们将介绍Kotlin传递可变长参数给Java可变参数实例代码的实现方法。 Java可变参数方法 ---------------- 在Java中,我们可以使用可变参数来定义方法,例如: ```java public class CallJavaUtils { ...

    java可变参数.pdf

    Java中的可变参数(Varargs)是一种语法特性,允许开发者定义接受不定数量参数的方法。这在实际开发中非常有用,特别是在实现方法重载或者想要简化代码时。可变参数在Java中自J2SE 1.5版本起被引入。在可变参数方法...

    java类和对象之可变参数.docx

    Java 类和对象是编程语言的基础,而可变参数(Variable Argument)是 Java 为了解决方法接收不定数量参数的问题引入的一个特性。这个特性允许我们创建一个方法,它能接受一个可变数量的参数,而不是固定数量。这在...

    java可变参数[文].pdf

    Java 可变参数是Java 1.5引入的一项特性,它允许我们在方法声明时定义一个可以接受任意数量相同类型的参数的方法。这种方法的实现基于数组,但在语法层面上提供了更为简洁的调用方式。 1. **可变参数的概念** - 可...

    关于java中可变长参数的定义及使用方法详解

    5. **效率考虑**:可变长参数在内部使用数组实现,因此在大量参数传递时可能会有性能损失,尤其是如果参数需要进行深拷贝或者转换操作。 总的来说,Java的可变长参数提供了一种灵活的编程方式,使得我们可以方便地...

    java类和对象之可变参数.pdf

    Java中的可变参数(Variable Arguments)是编程中一个便利的功能,允许我们在方法声明时定义一个可以接受任意数量相同类型参数的参数列表。这种特性在处理不确定数量输入时非常有用,比如函数式编程中的高阶函数。 ...

    Java 实例 - Varargs 可变参数使用源代码-详细教程.zip

    Java中的可变参数(Varargs)是自Java 5引入的一项特性,它允许函数接受一个或多个同类型的参数。在编程中,有时我们可能需要创建一个方法,该方法可以接收不同数量的相同类型参数,例如打印日志、计算数组元素等。...

    参数数目可变的函数 求和

    输入的第一个数字为准备输入函数的个数。 对后面输入的函数求和。

    Java中可变长度参数代码详解

    "Java中可变长度参数代码详解" Java中可变长度参数代码详解是Java语言中的一种特殊的参数传递机制,允许方法接受可变数量的参数。在Java 1.4之前,无法在Java程序中定义实参数量可变的方法,因为Java要求实参数量和...

    java可变长参数(三个点)md,学习代码

    因为可变长参数不能紧跟在非可变参数之后。 在实际编程中,可变长参数常常用于简化函数调用,例如`Arrays.asList()`和`String.format()`等。在Java Web开发中,比如使用Servlet处理HTTP请求时,有时也需要使用可变...

    Java Varargs 可变参数用法详解

    此外,可变参数在Java中是利用数组实现的。因此,如果在可变参数内部创建了数组,这个数组会在每次方法调用时都会被创建,这可能会导致不必要的内存消耗。一个优化的实践是,在方法内部检查可变参数是否为null或长度...

    Spring Quartz可变参数Trigger

    Quartz本身是一个独立的Java库,而Spring通过Spring Quartz模块提供了与Quartz的集成,使得配置和管理作业(Job)和触发器(Trigger)变得更加便捷。 在描述中提到的“动态改变Trigger的参数”,这指的是在任务执行...

    函数参数:可变参数

    C++也有类似的功能,使用`std::initializer_list`或者重载操作符`()`来实现可变参数。例如: ```cpp template void varArgs(Args... args) { // 使用展开元组的技术遍历所有参数 (std::cout ) ; } int main() { ...

    Java中实现参数名ASCII码从小到大排序(字典序).doc

    `TreeMap`是Java集合框架中的一个实现,它继承自`AbstractMap`并实现了`SortedMap`接口。`TreeMap`内部使用红黑树数据结构,可以保证插入的元素按照指定的比较器(默认是自然顺序,即ASCII码顺序)自动排序。在本例...

    浅谈Java中的可变参数

    Java中的可变参数(Variable-Argument Parameters)是一个强大的特性,它允许我们在方法声明中使用一个可变数量的参数。这个特性使得我们无需为每个参数数量创建不同的方法重载,简化了代码并提高了可读性。下面我们...

Global site tag (gtag.js) - Google Analytics