java—如何加载一个可以从其他类访问和操作的arraylist,而无需多次加载它们?

2sbarzqh  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(287)

假设我有一个名为product的类,它包含这样一个constructor

public Product(String name, double price, int barcode){
        this.name = name;
        this.barcode = barcode;
        this.price = price;
    }

然后我有另一个类importdata,它有一个方法,可以将许多产品加载到一个返回productlist的列表中。
我现在想从不同的类访问这个列表,而不必再次将数据加载到csv文件中。所以不是这样:

ImportFruitAndVegatables iFV = new ImportFruitAndVegatables();
List<Product> products = iFV.fillListWithProducts();

我想要这样的东西

mainController.products

因为我的主控制器已经运行了这个方法。这样地

List <Product> productList = importFruitAndVegatables.fillListWithProducts();

所以我的问题是:有没有什么方法你只需要运行这个方法一次,而不需要再次运行它?谢谢您!

dy1byipe

dy1byipe1#

您至少可以通过以下方式共享对对象的引用:
全局变量。在java中,是在类上定义的静态变量。标记为 final 如果在应用程序执行期间只应分配一次对象引用。
单例设计模式。在java中,这最好是作为一个枚举来定义一个名为 INSTANCE .
公共示例变量。如果 List <Product> productList 是的示例上的成员字段 mainController ,然后将该字段标记为 public 允许任何其他代码调用 mainController.productList .
将列表作为参数传递给方法。例如,定义一个方法,例如 public SalesReport produceSalesReport( List <Product> productList ) {…} .
返回对象引用的方法。当所需对象在第一次调用此方法之前没有示例化时,这提供了延迟加载的机会。
你没有提供足够的细节来提出建议。通常最好使用返回列表的方法。
提示:通常最好提供列表的副本或不可修改的列表,这样调用的程序员就不会干扰原始列表。看到了吗 List.copyOf .

相关问题