如何创建、初始化匿名数组

在Java中,匿名数组是一个没有名字的数组,就像匿名内部类一样。使用匿名数组的策略仅仅就是创建、初始化、应用,因为它没有任何名字因此你没法重用它。匿名数组在Java5可变参数出现之前是实现方法的可变参数的一种很好方式,使用匿名数组你可以任意地创建任何长度的数组传递给方法。一些典型的例子就是用在一些接收可变参数的聚合函数中如:sum()、avg()、min()、max()等等。在这篇教程中我们讲解一些如何创建匿名数组,如何初始化这些数组作为可变参数传递给方法。

如何创建数组
匿名数组与普通的数组的语法是一样的,如:`new [] { }`,不同的是创建完数组后不会存储在任何一个变量身上,这里是几个例子:

anonymous int array : new int[] { 1, 2, 3, 4};
anonymous String array : new String[] {"one", "two", "three"};
anonymous char array : new char[] {'a', 'b', 'c');

正如你见到的一样,创建和初始化匿名数组在同一时间内完成。当你使用new()创建的时候与此同时在同一行初始化了它们。因为它没有名字,所以没法在其他任何方法再去初始化它们。

使用匿名数组最佳方式就是实现可变参数的方法中,它能够调用不同数量的参数,这些方法预期接收的是一个数组类型,当代码调用这个方法,它创建一个匿名的不同长度的数组然后传递给方法处理,这里是完整的例子:

public class AnnonymousArrayExample {

    public static void main(String[] args) {

        //calling method with anonymous array argument
        System.out.println("first total of numbers: " + sum(new int[]{ 1, 2,3,4}));
        System.out.println("second total of numbers: " + sum(new int[]{ 1, 2,3,4,5,6,}));

    }

    //method which takes an array as argument
    public static int sum(int[] numbers){
        int total = 0;
        for(int i: numbers){
            total = total + i;
        }
    return total;
    }
}

同样的方法sum()可以通过java1.5引入的新特性可变参数 `public static int sum(int… numbers)`来实现,但是你不可以在一个类中同时有`sum(int[] numbers)`方法和 `sum(int… numbers)`,如果那样的话,会报 `throw compilation error`,因为后者内部使用的就是匿名数组传递给可变参数列表。

原文链接: javarevisited 翻译: ImportNew.com - 刘志军
译文链接: http://www.importnew.com/6370.html
[ 转载请保留原文出处、译者和译文链接。]

关于作者: 刘志军

程序员,关注 Java、Python、云计算,移动互联网。(新浪微博:@_Zhijun

查看刘志军的更多文章 >>



相关文章

发表评论

Comment form

(*) 表示必填项

还没有评论。

跳到底部
返回顶部