我正在尝试使用构造函数设置带有类范围的变量,每当我从构造函数中打印出来时,变量被设置为正确的值,但每当我尝试在同一个类中的另一个方法中使用该变量时value为null。如何正确使用构造函数之外的firstNameTest变量?
这是构造函数和调用方法:
public class Member extends javax.swing.JFrame {
DefaultTableModel rentalsTableModel;
String customerID;
String firstNameTest; //Variable declared with class scope.
public Member() {
initComponents();
rentalsTableModel = (DefaultTableModel)tblRentals.getModel();
}
Member(String firstName, String lastName, String phoneNumber, String email, String over18, String dateJoined, String dateExpired, String fines) throws SQLException {
System.out.println(firstName); // Successfully prints value.
firstNameTest = firstName;
System.out.println(firstNameTest); // Successfully prints value.
}
...
private void btnChangeCustomerActionPerformed(java.awt.event.ActionEvent evt) {
customerID = JOptionPane.showInputDialog(null, "Enter Customer ID.");
MemberDAO member = new MemberDAO();
try {
List membersDetails = member.getMembersDetails(customerID);
System.out.println(firstNameTest); // Value is null.
txtFullName.setText(firstNameTest);
} catch (SQLException ex) {
System.err.println(ex);
System.out.println("Failed to get Details.");
JOptionPane.showMessageDialog(null, "Failed to retrieve data.");
}
}
被叫方法:
public List<Member> getMembersDetails(String ID) throws SQLException{
List<Member> membersDetails = new ArrayList();
String getMembershipDetails = "SELECT first_name, last_name, phone_number, email, over_18, date_joined, date_expire, fines FROM members"
+ " WHERE member_id = " + ID + ";";
try {
DBConnection mc = new DBConnection();
dbConnection = mc.getConnection();
statement = dbConnection.createStatement();
ResultSet rs = statement.executeQuery(getMembershipDetails);
while(rs.next()){
String firstName = rs.getString("first_name");
String lastName = rs.getString("last_name");
String phoneNumber = rs.getString("phone_number");
String email = rs.getString("email");
String over18 = rs.getString("over_18");
String dateJoined = rs.getString("date_joined");
String dateExpired = rs.getString("date_expire");
String fines = rs.getString("fines");
System.out.println(firstName);
System.out.println(dateExpired);
Member m;
m = new Member(firstName, lastName, phoneNumber, email, over18, dateJoined, dateExpired, fines);
membersDetails.add(m);
System.out.println(membersDetails.get(0));
}
} catch (SQLException ex){
System.err.println(ex);
System.out.println("Failed to get Membership Details.");
return null;
} finally{
if (ps != null){
ps.close();
}
if (dbConnection != null){
dbConnection.close();
}
} return membersDetails;
}
答案 0 :(得分:1)
更改此行 -
System.out.println(firstNameTest); // Value is null.
到
System.out.println(((Member)membersDetails.get(0)).firstNameTest); // Value is null.