繁体   English   中英

从同一 package 中的另一个 class 访问 object

[英]Access an object from another class in the same package

我目前正在从事一个 uni 项目,我制作了一个名为“User”的简单 class,它包含来自 Java 数据库中的名称、地址等内容。 我想知道的是是否可以将所有 object 信息传递到另一个 class

 // 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,因此可以从存储在同一个 package 中但具有不同控制器的不同屏幕访问它,因为这是一个大型项目,因此分离控制器并传递 controller 当前正在运行是我能想到的最简单的方法. 这是交换当前根/控制器的代码

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

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

public class LoggedUser { // 个人详细信息 // 可在 scope 之外访问 public static String fName; 公共 static 字符串 lName; 公共 static 字符串电话; 公共 static 字符串 Email;

// 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
}

然后,您需要为要编辑的每个 static 属性设置 Setter 方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM