簡體   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