在动态语言,如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);
}
}
分享到:
- 2009-08-19 16:41
- 浏览 2319
- 评论(3)
- 论坛回复 / 浏览 (3 / 3625)
- 查看更多
相关推荐
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可变参数demo"的示例中,开发者通过分析Android蓝牙框架层的源码,对Java的可变参数有了更深入的理解,并编写了一个小的演示程序以备后用。下面我们将详细探讨Java可变参数的相关知识点。 1. 可变...
总之,Java可变参数简化了处理可变数量参数的方法定义和调用,使得代码更加简洁,同时也保留了数组的灵活性。在实际开发中,尤其是在需要处理命令行参数、集合数据等场景下,可变参数是一个非常实用的特性。
Kotlin传递可变长参数给Java可变参数实例代码 Kotlin是一种现代化的静态类型语言,运行于Java虚拟机上,能够与Java语言进行无缝集成。在实际开发中,我们经常需要在Kotlin和Java之间进行交互,特别是在调用Java方法...
Java可变参数列表,也称为不定参数,是Java语言中的一种特性,允许方法接收数量可变的参数。这种特性在编程时提供了极大的灵活性,尤其是在处理不确定数量输入的情况下。以下是关于Java可变参数列表的详细解释。 1....
Java可变参数当做数组处理的方法示例 Java可变参数当做数组处理的方法示例主要介绍了Java可变参数当做数组处理的相关原理、步骤与操作注意事项。本文将通过实例形式对Java可变参数当做数组处理的方法进行详细讲解,...
Java 可变参数是Java 5.0引入的一项新特性,它允许我们在方法签名中使用一个带有省略号(...)的参数,使得该方法能够接收任意数量的相同类型的参数。这种特性使得方法调用更加灵活,同时也简化了处理不定数量参数的...
Java中的可变参数(Varargs)是一种语法特性,允许开发者定义接受不定数量参数的方法。这在实际开发中非常有用,特别是在实现方法重载或者想要简化代码时。可变参数在Java中自J2SE 1.5版本起被引入。在可变参数方法...
Java可变参数(Varargs)是一种语言特性,允许方法接受可变数量的参数。在方法声明中使用省略号(...) 表示,可以将不定数量的参数传递给方法。可变参数使得方法更加灵活,可以接受任意数量的参数,并以数组形式访问...
NULL 博文链接:https://zhaoshijie.iteye.com/blog/1063296
Java可变参数使用示例 Java可变参数是Java 1.5中引入的一种新特性,用于处理参数个数不确定、类型确定的情况。可变参数使得方法的参数列表更加灵活,提高了编程的效率和灵活性。 可变参数的特点: 1. 可变参数...
Java 类和对象是编程语言的基础,而可变参数(Variable Argument)是 Java 为了解决方法接收不定数量参数的问题引入的一个特性。这个特性允许我们创建一个方法,它能接受一个可变数量的参数,而不是固定数量。这在...
Java中的可变参数(Variable Argument)是Java 5引入的一项特性,它允许我们在定义方法时,接受数量可变的参数。这种机制使得方法调用更加灵活,尤其在处理不确定参数个数的情况时,大大简化了代码。下面我们将深入...
Java中的可变参数常见用法实例总结 Java中的可变参数是一种特殊的参数类型,允许在方法中传递可变数量的参数。下面是Java中的可变参数常见用法实例总结: 一、可变参数的概念 在J2SE 1.4之前,Java中无法定义实参...
下面我们将深入探讨Java可变参数的工作原理、语法以及如何在实际项目中应用。 1. 可变参数的语法: 可变参数的声明方式是在参数类型后面加上三个点(...)。例如,以下是一个简单的可变参数方法,用于计算整数之和...
Java中的可变长参数(Varargs)是一种非常实用的语言特性,它允许我们在定义方法时接受一个不定数量的参数。这种特性使得我们无需为每个可能的参数组合定义单独的方法,简化了代码并提高了代码的可读性和灵活性。...
本文将探讨一个共同的话题——如何在C和Java中定义可变参数列表的函数。可变参数列表,也称为不定参数或可变参数,允许函数接受不同数量的参数,增加了代码的灵活性。 在C语言中,可变参数列表的实现依赖于`stdarg....
### Java中的可变参数定义与使用详解 #### 可变参数概述 在Java编程语言中,可变参数(Varargs)是一种特殊的参数形式,允许一个方法接受任意数量的同类型参数。这种特性使得方法能够更加灵活地处理不同数量的输入...