我目前正在进行一个uni项目,在该项目中我创建了一个名为"用户";它保存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();
}
我解决了这个问题。如果有人想知道,您需要用一个空构造函数将类属性设置为global。这样,类的任何实例都可以编辑属性
公共类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方法