如何创建对象数组

时间:2012-07-18 14:36:54

标签: java class

我觉得这很简单,因为我很确定我以前做过,但我似乎无法让它发挥作用。 我的班级是:

public class City
{
    String start = null;
    String end = null;
    int weight = 0;
}

我正在做:

City cityGraph[] = new City[l];

当我尝试访问cityGraph [x] .start时,我得到一个空指针异常,所以我想我也需要初始化数组中的每个元素,所以我这样做:

for(int j = 0; j < l; j++)
        {
            cityGraph[j] = new City();
        }

但它给了我这个错误:

No enclosing instance of type Graphs is accessible. 
Must qualify the allocation with an enclosing instance 
of type Graphs (e.g. x.new A() where x is an instance of Graphs).

我不知道这意味着什么,或者如何解决它。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:5)

当您将public class City声明为public class Graphs的内部类时,可能会发生这种情况

public class Graphs {

    public class City {

    }

}

这样,如果不首先构建City实例,就无法构建Graphs

您需要按如下方式构建City

cityGraph[j] = new Graphs().new City();
// or
cityGraph[j] = existingGraphsInstance.new City();

这实在是没有意义。而是将City提取到一个独立的类中,

public class Graphs {

}
public class City {

}

或通过声明它static使其成为静态嵌套类。

public class Graphs {

    public static class City {

    }

}

无论哪种方式,您都可以通过City构建新的new City()

另见:

答案 1 :(得分:1)

您的类似乎不是静态内部类,这意味着它需要外部类的实例才能实例化。

有关静态与内部类的更多信息 http://mindprod.com/jgloss/innerclasses.html

答案 2 :(得分:0)

我实际上已经回答了我自己的问题。使类静态修复它。我不知道为什么在我发布之前我没有想到这一点......希望这将有助于将来的人。