【问题标题】:Access an object from another class in the same package从同一包中的另一个类访问对象
【发布时间】:2021-08-06 21:35:29
【问题描述】:

我目前正在从事一个 uni 项目,我在其中创建了一个名为“User”的简单类,该类包含 Java 数据库中的名称、地址等内容。我想知道的是是否可以将所有对象信息传递给另一个类

 // Getting person's info from DB
            // Personal details
            String ID = boolPhone.getString("ID");
            String fName = boolPhone.getString("FIRSTNAME");
            String lName = boolPhone.getString("LASTNAME");
            String Phone  = boolPhone.getString("PHONENUMBER");
            String Email  = boolPhone.getString("EMAIL");
            
            // Address lookup via ID
            query = "SELECT * FROM ADDRESSES WHERE ADDRESSID = ?";
            userLookup = connection.prepareStatement(query);
            userLookup.setString(1, ID);
            ResultSet addressDetails = userLookup.executeQuery();
            
            if(addressDetails.next() == true){
                // Address details
                String houseNum = addressDetails.getString("HOUSENUMBER");
                String Street = addressDetails.getString("STREETNAME");
                String City = addressDetails.getString("CITY");
                String Flatblock = addressDetails.getString("FLATBLOCK");
                String Postcode = addressDetails.getString("POSTCODE");
                
                // Create class from database
                LoggedUser userDetails = new LoggedUser(ID, fName, lName, Phone,
                Email, houseNum, Street, City,
                Flatblock, Postcode);

关于为什么我需要传递访问这个特定对象的属性的额外上下文是因为它本质上使用输入的电话号码作为用户名。这告诉程序哪一行保存了数据库表中的所有用户数据,并允许从应用程序的其他部分进行访问。我正在使用 FXML,因此可以从存储在同一个包中但具有不同控制器的不同屏幕访问它,因为这是一个大型项目,因此分离控制器并仅传递当前正在运行的控制器是我能想到的最简单的方法.这是交换当前根/控制器的代码

Parent root = FXMLLoader.load(getClass().getResource("/HomeScreen/homeScreen.fxml"));
            Scene rootScene = new Scene(root);

            Stage rootWindow = (Stage)((Node)event.getSource()).getScene().getWindow();

            rootWindow.setScene(rootScene);
            rootWindow.show();
            }

【问题讨论】:

    标签: java mysql oop netbeans fxml


    【解决方案1】:

    我解决了这个问题。如果有人想知道,您需要使用空构造函数将类属性设置为全局。这样类的任何实例都可以编辑属性

    公共类 LoggedUser { // 个人资料 // 范围外可访问 公共静态字符串 fName; 公共静态字符串 lName; 公共静态字符串电话; 公共静态字符串电子邮件;

    // Address
    // Accessible outside of scope
    public static String houseNum;
    public static String Street;
    public static String City;
    public static String Postcode;
    public static String Flatblock;
    public static String ID;
    
    public LoggedUser(){
        // Empty constructor as we just want to
        // Access the global values stored here
    }
    

    然后,您需要为每个要编辑的静态属性提供 Setter 方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-23
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2011-04-18
      • 1970-01-01
      相关资源
      最近更新 更多