2

我构建了一个类来模仿 C# 结构:

public class Favourite {
    protected  String favName;
    protected  String favText;
    protected String favDelay;
    protected GeoPoint favPoint;
    protected Uri favUri;
}

我想创建一个此类的数组:

Favourite[] fav;

当我尝试访问此数组时:

fav[s].favName = bufr;

我得到一个 NullPointerException。 bufr确实包含数据。我已经跟踪它以访问数组,如下代码:

fav[s].favName = "";

还会产生 NullPointerException。

我已经在高低搜索了一些关于我正在做的事情是否被允许但找不到任何东西的迹象。

我想我的问题是:

你可以创建一个类对象的数组吗?如果是这样,您如何引用该数组?

我知道我可以使用五个单独的变量数组来做到这一点,但我觉得将它们放入一个类可以提供更好的结构并且更优雅(我喜欢优雅)。

4

3 回答 3

8

问题是它fav[s]是空的。

我不了解 C#,但是在 Java 中,您必须单独初始化数组的元素;您不能只声明数组并自动填充它。

您将不得不循环并用新对象fav填充它。Favourite

fav[s] = new Favourite()要么在您第一次使用时分配,要么fav[s]通过执行一次全部初始化它

for (int i = 0; i < fav.length; i++) {
  fav[s] = new Favourite();
}
于 2012-06-28T16:37:04.497 回答
3
Favourite[] fav = new Favourite[23]; // Allocate an array of 23 items

现在你有 23 个了!

于 2012-06-28T16:38:45.910 回答
1

您需要将项目放入数组中。声明的数组只是在每个槽中都有 null ;你需要做类似的事情fav[s] = new Favourite()

于 2012-06-28T16:37:25.090 回答