从同一包中的另一个 class 访问一个对象
Access an object from another class in the same package
我目前正在开发一个 uni 项目,我在其中制作了一个名为“用户”的简单 class,它包含 Java 中数据库中的名称、地址等内容。我想知道的是,是否可以将所有对象信息传递到另一个 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);
关于为什么我需要通过访问这个特定对象的属性的额外上下文是因为它基本上使用输入的 phone 数字作为用户名。这告诉程序哪一行保存数据库中的所有用户数据 table 并允许从应用程序的其他部分进行访问。我正在使用 FXML,因此可以从存储在同一个包中但具有不同控制器的不同屏幕访问它,因为这是一个大型项目,因此分离控制器并仅传递当前 运行 的控制器是最简单的方法我能想到。这是交换当前 root/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 {
// Personal details
// Accessible outside of scope
public static String fName;
public static String lName;
public static String Phone;
public static String 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
}
然后您需要 Setter 方法来处理每个要编辑的静态属性
我目前正在开发一个 uni 项目,我在其中制作了一个名为“用户”的简单 class,它包含 Java 中数据库中的名称、地址等内容。我想知道的是,是否可以将所有对象信息传递到另一个 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);
关于为什么我需要通过访问这个特定对象的属性的额外上下文是因为它基本上使用输入的 phone 数字作为用户名。这告诉程序哪一行保存数据库中的所有用户数据 table 并允许从应用程序的其他部分进行访问。我正在使用 FXML,因此可以从存储在同一个包中但具有不同控制器的不同屏幕访问它,因为这是一个大型项目,因此分离控制器并仅传递当前 运行 的控制器是最简单的方法我能想到。这是交换当前 root/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 { // Personal details // Accessible outside of scope public static String fName; public static String lName; public static String Phone; public static String 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
}
然后您需要 Setter 方法来处理每个要编辑的静态属性