`
得小白者天下得
  • 浏览: 8240 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java中的可变参数列表

    博客分类:
  • java
阅读更多
public class VarArgs {
    static void printArray(A... args) {
        for (Object obj : args) {
            System.out.println(obj + " ");
        }
        System.out.println("#######");
    }

    static void printArray(Object... args) {
        for (Object obj : args) {
            System.out.println(obj + " ");
        }
        System.out.println("*******");
    }

    static void printArray(String... args) {
        for (Object obj : args) {
            System.out.println(obj + " ");
        }
        System.out.println("*******");
    }

    public static void main(String[] args) {
        printArray();
        printArray(1, 2);
        printArray("a", "b", "c");
    }
}

class A {
    public A() {
        System.out.println("A");
    }
}
}

所谓可变参数列表,就是不指定方法参数的个数,可以是多个,也可以是0个。这样就会带来一个问题:当我们重载带有可变参列表的方法时,可能会遇到上述代码的情况,出现static void printArray(String... args)和static void printArray(A... args)。当我们在main()方法中调用printArray()方法的时候,编译器就不知道该调用那个printArray()方法了。
此外,如果注释掉static void printArray(String... args)和static void printArray(A... args)其中一个,程序就能跑起来了(虽然还有个static void printArray(Object... args))。
我是这样想的:所有的类都继承自Object类,即不管什么类型的参数都是Object的子类,在类型转换的时候,总是满足最低原则,只要能符合条件,就不在继续向上转型。所以main()中调用printArray()的时候,会先查找除了printArray(Object... args)以外的别的方法,如果存在,就调用;否则就调用printArray(Object... args)方法。如果是实参为基本类型,就会autoboxing为相应的包装类,再调用printArray(Object... args)。

小白初学,如有错误,恳请指正!
1
0
分享到:
评论

相关推荐

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

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

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

    Java 可变参数是指在方法中可以传递同类型的可变参数,JDK 1.5 开始支持这种特性。可变参数可以使得方法更加灵活、方便使用。可变参数的使用规则包括:可以不写参数,即传入空参;可以直接在里边写入参数,参数间用...

    java可变参数

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

    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可变参数demo

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

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

    需要注意的是,在Java中,可变参数只能位于参数列表的最后,并且只能有一个可变参数。 2. **可变参数的使用**: - 调用 `sum(1)`、`sum(1, 2)` 等等,可以看出,不论传入多少个整型数值,`sum` 方法都能够正确...

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

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

    Java中支持可变参数详解

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

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

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

    Java可变参数列表详解

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

    java可变参数.pdf

    可变参数的另一个需要注意的点是,一个方法中只能有一个可变参数,并且可变参数必须是方法参数列表中的最后一个参数。这是为了避免在调用方法时可能出现的混淆。 总结来说,Java的可变参数提供了一种灵活的方式来...

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

    3. **唯一性**:在一个方法签名中,可变长参数只能出现一次,并且必须是所有参数列表中的最后一个。这意味着你不能在其他参数之后再定义一个可变长参数。 4. **类型安全**:虽然可变长参数看起来像是接受任意数量的...

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

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

    java可变参数[文].pdf

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

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

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

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

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

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

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

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

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics