Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从方法返回初始化的对象数组_Java_Arrays - Fatal编程技术网

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

Java 从方法返回初始化的对象数组,java,arrays,Java,Arrays,我需要在我的主类中使用一个对象数组,让我们称之为main。现在,我在Cara的另一个类中有一个方法,它返回一个初始化的对象数组,我可以在Main中使用它 如何调用Car中的方法来返回对象数组,然后将Main中的对象数组分配给返回的数组 就像这样 Main.java java 尝试将getCars设置为静态,这样您就可以从任何上下文调用Car.getCars,而无需初始化不同的Car对象 例如: public static Car[] getCars() { ... } 选项1:使getC

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

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

就像这样

Main.java

java

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

例如:

public static Car[] getCars() {
   ...
}
选项1:使getCars成为静态方法。e、 例如,在Car.java中

public static Car[] getCars() { ... }
选项2:在Main.java中,实例化一辆新车,然后使用它

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

在您的示例中,选项1感觉像是正确的,因为返回的数组似乎独立于任何特定的汽车。但是,如果该方法是getSimilarCars,并且返回了一组与汽车的特定实例相似的汽车,则首选选项2。

有两种方法:

使汽车双重成为汽车对象的工厂,将getCars更改为静态,或 认识到getCars不属于Car,应该转移到另一个类,比如CarFactory。 创建单独的factory类通常是更好的选择:

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();
    ...
}

为什么不创建一个Car类的实例,并在类Main中调用getCars方法。这感觉不太合适,事实证明不是这样,静态是我现在使用的。使用工厂的概念会比使用静态关键字“更好”吗?@CSStudent factory让生成汽车对象实例的类拥有自己的状态,独立于汽车的状态。它还允许您拥有多个单独配置的工厂,每个工厂生产不同的汽车子类。不过,使方法静态化的解决方案更为方便。
public class CarFactory {
    public CarFactory() {
        // Do factory-specific initialization
    }
    public Car[] getCars() {
        ... // Make an array of Car objects
    }
}
class Main {
    private static final CarFactory factory = new CarFactory();
    private final Car cars[] = factory.getCars();
    ...
}