zoukankan      html  css  js  c++  java
  • (四)《Java编程思想》——可变参数列表

    以object数组为参数的方法实现可变参数列表

    package chapter5;
    
    /**
     * 以object数组为参数的方法实现可变参数列表
     */
    class A {
    }
    
    public class VarArgs {
        static void printArray(Object[] args) {
            for (Object obj : args)
                System.out.print(obj + "   ");
            System.out.println();
        }
    
        public static void main(String[] args) {
            printArray(new Object[] { new Integer(55), new Float(5.34),
                    new Double(3.56) });
            printArray(new Object[] { "one", "two", "three" });
            printArray(new Object[] { new A(), new A(), new A() });
        }
    }

    【运行结果】:

    55   5.34   3.56  
    one   two   three  
    chapter5.A@18a992f   chapter5.A@4f1d0d   chapter5.A@1fc4bec  

    java SE5之后,有了新特性可以实现可变参数列表

    package chapter5;
    
    /**
     * 可变参数列表
     */
    public class NewVarArgs {
        static void printArray(Object... args) {
            for (Object obj : args)
                System.out.print(obj + "  ");
            System.out.println();
        }
    
        public static void main(String[] args) {
            printArray(new Integer(33), new Float(5.23), new Double(3.55));
            printArray(33,5.23f,3.55d);
            printArray("one","two","three");
            printArray(new A(),new A(),new A());
            printArray((Object[])new Integer[]{1,2,3,4,5,6});
            printArray();
        }
    
    }

    【运行结果】:

    33  5.23  3.55 
    33  5.23  3.55 
    one  two  three 
    chapter5.A@18a992f  chapter5.A@4f1d0d  chapter5.A@1fc4bec 
    1  2  3  4  5  6 

      上面的例子中,printArray();是正确的,表明可以将0个参数传递给可变参数列表。当具有可选的尾随参数是,很有用。

    package chapter5;
    
    /**
     * 有可选尾随可变参数列表
     */
    public class OptionalTrailingArguments {
        static void f(int required, String... trailing) {
            System.out.print("required:" + required + " ");
            for (String s : trailing)
                System.out.print(s + " ");
            System.out.println();
        }
    
        public static void main(String[] args) {
            f(1, "one");
            f(2, "one", "two");
            f(0);
        }
    }

    【运行结果】:

    required:1 one
    required:2 one two
    required:0

    可变参数列表与自动包装机制和谐共处

    package chapter5;
    
    /**
     * 可变参数列表与自动包装机制和谐共处
     */
    public class AutoboxingVarargs {
        static void f(Integer... args) {
            for (Integer i : args)
                System.out.print(i + "  ");
            System.out.println();
        }
    
        public static void main(String[] args) {
            f(new Integer(1), new Integer(2));
            f(4, 5, 6, 7);
            f(23, new Integer(24), 25);
        }
    }

    【运行结果】:

     1  2 
    4  5  6  7 
    23  24  25 

     可变参数列表使重载变复杂

    package chapter5;
    
    /**
     * 可变参数列表使重载变复杂
     */
    public class OverloadVargs {
        
        static void f(Character... args) {
            System.out.print("first");
            for (Character c : args)
                System.out.print(" " + c);
            System.out.println();
        }
        
        static void f(Integer... args) {
            System.out.print("second");
            for (Integer i : args)
                System.out.print(" " + i);
            System.out.println();
        }
        
        static void f(Long... args) {
            System.out.print("Third");
        }
        
        public static void main(String[] args) {
            f('a','b','c');
            f(1);
            f(2,1);
            f(0);
            f(0L);
            //f();
        }
    
    }

    【运行结果】:

     first a b c
    second 1
    second 2 1
    second 0
    Third

    上例会自动匹配重载的方法,但是调用f()时,就不知道匹配哪个方法了,此时须增加一个可变参数来解决问题。

  • 相关阅读:
    LoadRunne遇到的一些问题FAQ(持续更新...)
    LoadRunner11下载、安装与破解
    LoadRunner之录制你的第一个脚本
    appium+Linux环境安装配置
    appium-FAQ(持续更新...)
    appium启动运行log分析
    利用Unity3D与Oculus实现机器情绪安抚师的一种方案
    利用Unity3D实现多平台增强现实网络游戏的一种方案
    Ubuntu16.04安装NVIDIA驱动时的一些坑与解决方案
    你的计算机也可以看懂世界——十分钟跑起卷积神经网络(Windows+CPU)
  • 原文地址:https://www.cnblogs.com/echolxl/p/3175110.html
Copyright © 2011-2022 走看看