我怎样才能在自己内部放置一个Java数组?

And*_*een 14 java arrays

我正在尝试创建一个Java对象数组并将数组置于其第二个索引中(为了表示与数组的自相似分形),但是当我尝试访问时theArray[1][1][0],我收到此错误:

Main.java:11: error: array required, but Object found.

这是我到目前为止所尝试的,我不确定为什么它不起作用:

import java.util.*;
import java.lang.*;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Object[] theArray = new Object[2];
        theArray[0] = "This array should contain itself at its second index.";
        theArray[1] = theArray; //Now I'm attempting to put the array into itself.
        System.out.println(theArray[1][1][0]) //Main.java:11: error: array required, but Object found
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上是否可以在自己内部放置一个Java数组,就像我试图在这里做的那样?

SLa*_*aks 19

theArray[1]编译时类型Object(因为它来自一个对象数组).

您需要将其强制转换Object[]为将其用作数组.


您遇到的基本问题是,虽然包含自身的数组是完全有效的对象,但它不是有效类型.

您可以任意深入嵌套数组类型 - Object[][][][][][][][][][][][][]是有效类型.
但是,该类型的"底层"不能是一个数组.

您正在尝试创建一个自身数组的类型.
使用泛型,这是可能的:

class Evil extends ArrayList<Evil> { }
Run Code Online (Sandbox Code Playgroud)