我需要在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;
}
答案 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();
...
}