'使用静态数组'......这甚至意味着什么?

时间:2010-10-23 07:21:56

标签: java oop

我知道静态数组是什么以及如何在Java中使用它,但是我的教授为我们分配了一个程序,并且为了我们必须创建的许多类之一,他要求我们在这样的“使用静态数组”多个对象将在那里存储数据的方式。

例如,如果对象是车库,则每个车库实例将以100x3静态数组存储其数据:

 1, honda, four-door
 3, toyota, two-door
 1, bicycle, -1
 1, ford, pickup
 2, ford, fiesta
 3, chevy, two-door
 3, bicycle, -1

-1表示每个车库的结束。

这是一个糟糕的例子,但你明白了。

所以,我认为他想要的是这样的:

在demo类(主要的)中,我将声明一个用静态数组创建的类的实例:

      PublicAccessArray p1 = new  PublicAccessArray();

然后该课程开始时如下:

      public class PublicAccessArray {

      public static int[][] accessArray;

      public static void PublicAccessArray()
      {
          accessArray = new int[100][3];
      ...

然后我的类将创建使用静态数组的对象,如下所示:

      public class ClassThatUsesTheStaticArray {
           public void ClassThatUsesTheStaticArray (PublicAccessArray array1)
           {...

然后回到demo / main类中,我将使用:

实例化这些对象
      ClassThatUsesTheStaticArray  c1= new ClassThatUsesTheStaticArray (p1);

我认为这就是他的意思,我知道静态数组应该看起来像我给出的例子(尽管它使用数字作为数据/元素)。

我知道他希望我们从demo / main类中实例化ClassThatUsesTheStaticArray对象,我能看到的唯一方法就是将p1数组传递给它。

我正在做的事情似乎是正确的方法吗?我经常更容易进行实际编码而不是弄清楚我的教授实际上要求我们做什么,所以我想知道这听起来像是一种“使用静态数组”的方法。

2 个答案:

答案 0 :(得分:1)

在您的示例中,静态数组定义为int[100][3],它是int数组。这不适合您的示例。你可以将它声明为Object数组,但这很难看。

另外请注意,除了学术练习外,请务必谨慎使用静态字段。

答案 1 :(得分:1)

我不认为你是正确的。 首先,你不能在int数组中存储“honda”或“toyota”。所以你需要String数组。第一列看起来像索引,因此您根本不必将它存储在数组中。

其次,这个例子不够OO。我建议你以下。

创建类Vehicle:

public abstract class Vehicle {
    private String name;
    // getters, setters, constructor...
}

然后创建扩展Vehicle的Car和Bicycle类。这些类可以包含其他数据:

public class Car extends Vehicle {
    public static enum Type {PICKUP, }; // add here other types
    private String model;
    private int doorsCount;
    private Type type;
}

现在创建类Garage:

public class Garage {
    private List<Vehicle> vehicles;
    // other fields and methods relevant for garage.
}

这是创建车库静态数组的时间:

private static Garage[] garages = new Garage[100];

你可以使用静态初始化器填充它(我假设这里存在方便的构造函数,我在解释中没有提到):

static {
    Vehicle honda = new Car("honda", 4);
    Vehicle toyota = new Car("toyota", 2);    
    Vehicle bicycle = new Bicycle("bicycle");    
    garaghes[0] = new Garage("First", new Vehicle[] {honda, toyota, bicycle});

    Vehicle fiesta = new Car("ford", "fiesta");
    Vehicle pickup = new Car("ford", Car.Type.PICKUP);
    garaghes[1] = new Garage("Second", new Vehicle[] {fiesta, pickup});
}

我相信你的教授会满意的。祝你好运!