Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 - Fatal编程技术网

有没有一种方法可以将文件加载到java中的多个类,而不必每次都调用它们?

有没有一种方法可以将文件加载到java中的多个类,而不必每次都调用它们?,java,Java,我一直在为一个多层停车场编写一个程序,我必须为停车位、服务员和每个区域的费用分别加载3个文件。问题是我需要跨多个类访问它们,而不必每次都调用.load()方法。这导致程序无法正常工作,因为它重置了类中加载的数据,因为我有两个主要类Application和Admin需要在它们之间共享这些数据。我能做些什么来解决这个问题 顶级类,其中包含公共静态void main public class Application { private Scanner scan; private Ad

我一直在为一个多层停车场编写一个程序,我必须为停车位、服务员和每个区域的费用分别加载3个文件。问题是我需要跨多个类访问它们,而不必每次都调用.load()方法。这导致程序无法正常工作,因为它重置了类中加载的数据,因为我有两个主要类Application和Admin需要在它们之间共享这些数据。我能做些什么来解决这个问题

顶级类,其中包含公共静态void main

public class Application {

    private Scanner scan;
    private Admin admin;
    private ZoneCost zoneCost;
    private Attendants attendants;
    private Database database;

    private Application() {
        scan = new Scanner(System.in);
        admin = new Admin();
        zoneCost = new ZoneCost();
        attendants = new Attendants();
        database = new Database();
        zoneCost.load();
        database.load();
    }
该类是从应用程序类调用的

public class Admin {

    private Scanner scan;
    private Attendants attendant;
    private ZoneCost zoneCost;
    private Database database;

    Admin() {
        scan = new Scanner(System.in);
        attendant = new Attendants();
        zoneCost = new ZoneCost();
        database = new Database();
        zoneCost.load();
        attendant.load();
        database.load();
    }
如图所示,这两个类最终都调用了相同的.load()方法


编辑感谢大家帮助我快速解决此问题,节省了我大量的时间

只需使用构造函数将对象作为参数传递即可

public class Application {

        private Scanner scan;
        private Admin admin;
        private ZoneCost zoneCost;
        private Attendants attendants;
        private Database database;

        private Application() {
            scan = new Scanner(System.in);
            zoneCost = new ZoneCost();
            attendants = new Attendants();
            database = new Database();
            zoneCost.load();
            database.load();
            admin = new Admin(scan, zoneCost, database, attendants );
        }



    public class Admin {

        private Scanner scan;
        private Attendants attendant;
        private ZoneCost zoneCost;
        private Database database;

        Admin(Scanner scan, ZoneCost zoneCost, Database database, 
              Attendants attendant) {
            this.scan = scan;
            this.attendant = attendant;
            this.zoneCost = zoneCost;
            this.database = database;
        }

要么将它们传递给
管理员
构造函数,要么让setter methodshow将它们传递给管理员构造函数@Scarywombat您必须创建/更改构造函数才能接受这些对象,而且还要通过
扫描仪
是的,谢谢!这为我节省了不少时间