我该如何做到这一点,以便我可以从任何类访问这个数组



所以我一直在尝试获取它,以便任何类都可以访问我的数组,但我不确定我做错了什么。任何人都知道为什么这不起作用以及我需要更改什么?

class UnitBools {
    public static boolean[] anArray;
    public UnitBools(boolean[] anArray){
            anArray = new boolean[10];
            anArray[0] = false;
    }
    public boolean[] getArray(){
            return anArray;
    }
    public  UnitBools(){
            UnitBools.anArray[0] = true;
    }
public static void main(String[] args) {
    System.out.println("Element at index 0: "+ UnitBools.anArray[0]);
}
}

现在我的 Sysout 正在返回线程异常。

感谢您的任何帮助。

因为anArray是一个Object,所以它的默认值为null。您需要自己初始化anArray,请尝试:

public static boolean[] anArray = new boolean[1];

或其他一些数字。[]之间的数字表示数组的大小。从上面的语句来看,anArray的大小为 1 这意味着它只有1索引,即 0

你必须

初始化静态anArray;也许是这样

private static boolean[] anArray;
static {
  final int size = 10;
  anArray = new boolean[size];
  for (int i = 0; i < size; i++) {
    anArray[i] = true;
  }
}
public static boolean[] getArray() {
  return anArray;
}

然后输出

true

使用您现有的main方法。

您需要初始化构造函数之外的任何静态变量,因为无需该类的实例即可访问它们。

public class Test 
{
    public static void main(String[] args) 
    {
        System.out.println("Element at index 0: " + UnitBools.anArray[0]);
    }
}
class UnitBools
{
    public static boolean[] anArray = {true, true};
    public UnitBools()
    {
        //UnitBools.anArray[0] = true;
    }
    public UnitBools(boolean[] anArray)
    {
        //anArray = new boolean[10];
        //anArray[0] = false;
    }
    public boolean[] getArray()
    {
        return anArray;
    }
}

相关内容

最新更新