`

JAVA可变参数对重载的影响

 
阅读更多
package com.lwf.test;

public class TestJ {
	void print(String... i){
		for(String i1 : i){
		System.out.println(i1 + ">>String");
		}
	}
	void print(Integer... i){
		for(Integer i1 : i){
			System.out.println(i1 + ">>Integer");
		}
	}
	public static void main(String[] args) {
		TestJ s = new TestJ();
		s.print(1);
		s.print(new Integer("2"));
	}
}

 

输出结果

1>>Integer
2>>Integer

 

再看下列代码:

package com.lwf.test;

public class TestJ {
	void print(int... i){
		for(int i1 : i){
		System.out.println(i1 + ">>String");
		}
	}
	void print(Integer... i){
		for(Integer i1 : i){
			System.out.println(i1 + ">>Integer");
		}
	}
	public static void main(String[] args) {
		TestJ s = new TestJ();
//		s.print(1);
//		s.print(new Integer("2"));
	}
}

 

当可变参数方法有int 和Integer时,方法未调用前编译是没问题的。但打开方法调用



 当调用时会报错。具体错误为

The method print(int[]) is ambiguous for the type TestJ

 

 

将代码改成

package com.lwf.test;

public class TestJ {
	void print(int a,int... i){
		for(int i1 : i){
		System.out.println(i1 + ">>int");
		}
	}
	void print(boolean b,Integer... i){
		for(Integer i1 : i){
			System.out.println(i1 + ">>Integer");
		}
	}
	public static void main(String[] args) {
		TestJ s = new TestJ();
		s.print(1,2);
		s.print(new Integer("2"),new Integer("3"));
		s.print(true, new Integer("4"));
	}
}

 

输出结果:

2>>int
3>>int
4>>Integer

 

结论,引用JAVA编程思想:你应该总是在重载方法的一个版本上使用可变参数列表,或者压根就不使用它。

  • 大小: 23.8 KB
分享到:
评论
1 楼 aigo_h 2014-02-17  
呵呵 。
学习一下

相关推荐

    java可变参数

    Java可变参数是Java语言中一个非常实用的特性,它允许方法接受数量可变的参数。这个特性在Java 5中被引入,极大地提高了代码的灵活性和可读性。下面我们将详细探讨Java可变参数的概念、用法以及背后的实现原理。 ##...

    Java可变参数demo

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

    java可变参数.pdf

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

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

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

    Java可变参数列表详解

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

    java中的可变参数使用方法

    虽然可变参数提供了便利,但每次调用都会创建一个新的数组,这可能对性能产生影响,尤其是在频繁调用的情况下。为了解决这个问题,我们可以根据实际情况提供重载方法。例如,如果95%的调用都只需要3个或更少的参数...

    函数参数:可变参数

    位置参数允许用户传递一个未命名的可变参数列表,而关键字参数则允许传递一个由键值对组成的可变参数列表。下面是一些示例: ```python def var_args(*args, **kwargs): print("Positional arguments:", args) ...

    Java方法的可变参数类型实例分析

    Java中的可变参数类型是一种非常实用的特性,它允许我们在定义方法时接受任意数量的同类型参数。这个特性从Java 5开始引入,极大地增强了代码的灵活性和可读性。可变参数通常以"..."(三个点)的形式出现在参数列表...

    解析Java的可变长参数列表及其使用时的注意点

    Java的可变参数列表(Variable Argument List),也称为varargs,是自Java 5引入的一项特性,它允许方法接受一个可变数量的参数。这种机制使得编写接受任意数量相同类型参数的方法变得更加方便。在使用可变参数时,...

    大数据必学Java基础(二十七):详述main方法和了解可变参数

    在大数据领域,掌握Java基础至关重要,特别是main方法和可变参数,因为它们是编写任何Java程序的基础。 详述main方法: 1. **main方法说明**:main方法是Java程序的主方法,它告诉JVM从何处开始执行代码。当JVM...

    Java参数分析

    - 自Java 5起,引入了可变参数,允许一个方法接受任意数量的同一类型的参数。这在实现灵活的函数接口时非常有用,例如`public void printNumbers(int... numbers)`,这个方法可以接受零个、一个或多个整数。 6. **...

    浅谈Java中的可变参数

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

    java东方标准大唐电信

    如果需要处理多组不同类型的可变参数,可以通过重载方法来实现。 4. 编译器处理方式 在编译阶段,Java编译器会将可变参数视为一个一维数组。这意味着在函数内部,你可以像处理数组一样处理这些可变参数。例如,你...

    Java方法的艺术:重载与重写的深度解析

    通过本文的介绍,读者应该对 Java 中如何实现方法的重载和重写有了深入的理解。掌握这两种技术,将能够编写出更加灵活和可扩展的 Java 代码。在实际编程过程中,建议根据项目的具体情况调整和应用这些技巧,以达到...

    java 方法重载

    2. 避免使用可变参数列表(如`...`)作为唯一区别,因为这样可能会导致难以预料的行为,尤其是在方法内部需要处理可变参数列表的情况下。 3. 使用方法重载时,应保持方法功能的一致性,避免引起误导。如果两个重载...

    Java定义形式及可变参数实例解析

    Java定义形式及可变参数实例解析 Java 中的方法是类或对象的一部分,不能独立存在。方法的调用者必须是类或对象。Java 中的方法可以分为静态方法和实例方法两种。静态方法使用 static 关键字修饰,可以直接通过类名...

    浅谈Java中方法的参数传值.zip

    这意味着在方法内部对参数的修改不会影响到方法外部的原始变量。例如: ```java public void changeValue(int x) { x = 10; // 在方法内部修改x } int original = 5; changeValue(original); System.out.println...

    Java 实例 - 重载(overloading)方法中使用 Varargs技术包含源代码和详细教程.zip

    本教程将深入探讨如何在重载方法中利用Varargs(可变参数)技术,这是一项非常实用的功能,能够使方法接受任意数量的相同类型参数。此资源包包含了相关的源代码实例和详细教程,帮助你更好地理解和应用这一概念。 ...

    Java的继承、重载和多态.doc

    3. **重载**:重载(Overloading)指的是在同一个类中,可以有多个方法拥有相同的名称但参数列表不同(参数个数、类型或者顺序不同)。如`Computer`类中的两个`compute`方法,它们的参数类型不同,这就是方法的重载...

    runoob菜鸟教程的java教程

    在Java中,不仅可以直接使用数组,还可以使用可变参数(varargs)功能,这允许开发者编写接受任意数量参数的方法。可变参数在内部实际上是一个数组,使得我们可以灵活地传递参数给方法。 Java的发展历史中,有一些...

Global site tag (gtag.js) - Google Analytics