`
kaka2008
  • 浏览: 93609 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java可变参数

    博客分类:
  • java
阅读更多
在动态语言,如ruby中,可以实现可变参数
   def test(* arg)
      for s in arg
        puts s,s.class
      end
   end
 
   test(1,"2",2.3)
 

只需在参数前加一个*即可。
调用方法时,可以传入任意数量,任意类型的参数了。
一直以为可变参数是动态语言的特性呢。
最近才发现,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);
       }
    }
  

 
分享到:
评论
3 楼 metallica_1860 2010-04-09  
george_space 写道
jcs7575 写道
你要说明什么??


2 楼 george_space 2009-08-20  
jcs7575 写道
你要说明什么??

1 楼 jcs7575 2009-08-19  
你要说明什么??

相关推荐

    10.java可变参数.zip

    10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可变参数.zip10.java可...

    Java数组传递及可变参数操作实例详解

    Java数组传递及可变参数操作实例详解 Java 数组传递是指在方法之间传递数组对象的引用,而不是传递数组对象本身。这意味着,方法中对数组的修改将会影响原数组。在 Java 中,所有对象都是通过引用进行操作的,而...

    Java可变参数demo

    在这个名为"Java可变参数demo"的示例中,开发者通过分析Android蓝牙框架层的源码,对Java的可变参数有了更深入的理解,并编写了一个小的演示程序以备后用。下面我们将详细探讨Java可变参数的相关知识点。 1. 可变...

    java可变参数[文].pdf

    总之,Java可变参数简化了处理可变数量参数的方法定义和调用,使得代码更加简洁,同时也保留了数组的灵活性。在实际开发中,尤其是在需要处理命令行参数、集合数据等场景下,可变参数是一个非常实用的特性。

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

    Kotlin传递可变长参数给Java可变参数实例代码 Kotlin是一种现代化的静态类型语言,运行于Java虚拟机上,能够与Java语言进行无缝集成。在实际开发中,我们经常需要在Kotlin和Java之间进行交互,特别是在调用Java方法...

    Java可变参数列表详解

    Java可变参数列表,也称为不定参数,是Java语言中的一种特性,允许方法接收数量可变的参数。这种特性在编程时提供了极大的灵活性,尤其是在处理不确定数量输入的情况下。以下是关于Java可变参数列表的详细解释。 1....

    java可变参数当做数组处理的方法示例

    Java可变参数当做数组处理的方法示例 Java可变参数当做数组处理的方法示例主要介绍了Java可变参数当做数组处理的相关原理、步骤与操作注意事项。本文将通过实例形式对Java可变参数当做数组处理的方法进行详细讲解,...

    java 可变参数详解及实例

    Java 可变参数是Java 5.0引入的一项新特性,它允许我们在方法签名中使用一个带有省略号(...)的参数,使得该方法能够接收任意数量的相同类型的参数。这种特性使得方法调用更加灵活,同时也简化了处理不定数量参数的...

    java可变参数.pdf

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

    Java的可变参数讲解代码(使用方式、原理、结合泛型、使用元组或列表进行参数传递、 使用默认值、缓存计算结果、实战构建动态日志)

    Java可变参数(Varargs)是一种语言特性,允许方法接受可变数量的参数。在方法声明中使用省略号(...) 表示,可以将不定数量的参数传递给方法。可变参数使得方法更加灵活,可以接受任意数量的参数,并以数组形式访问...

    JAVA可变参数之经典用法

    NULL 博文链接:https://zhaoshijie.iteye.com/blog/1063296

    java可变参数使用示例

    Java可变参数使用示例 Java可变参数是Java 1.5中引入的一种新特性,用于处理参数个数不确定、类型确定的情况。可变参数使得方法的参数列表更加灵活,提高了编程的效率和灵活性。 可变参数的特点: 1. 可变参数...

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

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

    Java中支持可变参数详解

    Java中的可变参数(Variable Argument)是Java 5引入的一项特性,它允许我们在定义方法时,接受数量可变的参数。这种机制使得方法调用更加灵活,尤其在处理不确定参数个数的情况时,大大简化了代码。下面我们将深入...

    Java中的可变参数常见用法实例总结

    Java中的可变参数常见用法实例总结 Java中的可变参数是一种特殊的参数类型,允许在方法中传递可变数量的参数。下面是Java中的可变参数常见用法实例总结: 一、可变参数的概念 在J2SE 1.4之前,Java中无法定义实参...

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

    下面我们将深入探讨Java可变参数的工作原理、语法以及如何在实际项目中应用。 1. 可变参数的语法: 可变参数的声明方式是在参数类型后面加上三个点(...)。例如,以下是一个简单的可变参数方法,用于计算整数之和...

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

    Java中的可变长参数(Varargs)是一种非常实用的语言特性,它允许我们在定义方法时接受一个不定数量的参数。这种特性使得我们无需为每个可能的参数组合定义单独的方法,简化了代码并提高了代码的可读性和灵活性。...

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

    本文将探讨一个共同的话题——如何在C和Java中定义可变参数列表的函数。可变参数列表,也称为不定参数或可变参数,允许函数接受不同数量的参数,增加了代码的灵活性。 在C语言中,可变参数列表的实现依赖于`stdarg....

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

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

Global site tag (gtag.js) - Google Analytics