从方法返回初始化的对象数组

时间:2014-10-16 14:34:35

标签: java arrays

我需要在main类中使用一组对象(让我们称之为Main)。现在,我在Car(一个不同的类)中有一个方法,它返回一个初始化的对象数组,我可以在Main中使用它。

如何调用Car中的方法返回对象数组,然后将Main中的对象数组分配给返回的数组?

像这样...

Main.java

/* code */
Car cars[] = /* what goes here to get the initialised array from Car's method? */
/* Car cars[] = getCars(); doesn't work since I can't call getCars() as Main doesn't inherit from Car */


/* more code */

Car.java

public Car[] getCars()
{
  Car cars[] = new Car[NUM_OF_CARS];
  /* initialised all car elements */
  return cars;
}

3 个答案:

答案 0 :(得分:2)

尝试将getCars()设为静态,这样您就可以从任何上下文中调用Car.getCars(),而无需初始化不同的Car对象。

例如:

public static Car[] getCars() {
   ...
}

答案 1 :(得分:2)

选项1:使getCars()成为静态方法。例如,在Car.java中

public static Car[] getCars() { ... }

选项2:在Main.java中,实例化一辆新Car,然后使用它。

Car aCar = new Car();
Car[] arrayOfCars = aCar.getCars();

在您的示例中,选项1感觉是正确的,因为返回的数组似乎独立于任何特定的汽车。但是,如果方法是“getSimilarCars()”并返回一个类似于Car的特定实例的汽车数组,那么选项2将是首选。

答案 2 :(得分:1)

有两种方法:

  • Car加倍作为"工厂" Car个对象,将getCars更改为static
  • 认识到getCars不属于Car,应该转移到另一个类别,例如CarFactory

独立生产"工厂"上课通常是更好的选择:

public class CarFactory {
    public CarFactory() {
        // Do factory-specific initialization
    }
    public Car[] getCars() {
        ... // Make an array of Car objects
    }
}

现在在Main课程中你可以这样做:

class Main {
    private static final CarFactory factory = new CarFactory();
    private final Car cars[] = factory.getCars();
    ...
}