为什么不能将匿名数组用作其他任何匿名类?

时间:2019-01-10 12:13:52

标签: java arrays

我正在IDE的主要方法中编写以下内容

public static void main(String... args){
    new String(); // no compilation fail
    new Object(); // no compilation fail
    new int[]{1,2,3,4}; // compilation fails
}

为什么数组不能像其他对象一样匿名?

当我们谈论将它们作为方法参数传递时,我可以看到我可以匿名使用它们,但是我希望即使在这种情况下,它们也可以像其他对象一样工作。

3 个答案:

答案 0 :(得分:5)

类的构造函数可以包含任意指令,因此在某些情况下,仅调用类的构造函数即可完成您想做的所有事情。

创建一个新数组不会做任何事情,它不可能执行在某处定义的指令。如果您不打算使用这样创建的数组,从根本上来说就无法达到目的。

答案 1 :(得分:1)

这有效:

public static void main(String... args){
   new String(); // no compilation fail
   new Object(); // no compilation fail
   int[] ia = new int[]{1,2,3,4}; // compilation fails

}

的确,如果您没有对新创建的数组的引用,则无法访问它,因此其创建是徒劳的。另一方面,在不保存引用的情况下创建对象可能是有意义的-检查它是否引发异常。

答案 2 :(得分:0)

    public  static void somemethod(int a []){}

    public static void main(String[] args) {
            new String(); // no compilation fail
            new Object(); // no compilation fail
            somemethod(new int[]{1,2,3,4}); }  // compilation will not fails now
  

您需要X(array here),执行此操作就可以了。

     

new array[]不是声明。