java - 将字符串的值保存到另一个类并检索它

标签 java string

我当前正在尝试将字符串的值保存到 JAVA 中名为 Memory.JAVA 的另一个类文件中。我这样做的原因是因为变量不会保存在 Try - Catch block 之外。因此,我使用以下代码在 try catch block 中启动该类:

Memory mem = new Memory();

然后当我想保存字符串时,我使用以下内容:

 mem.brother1ID = "Whatever";

我之所以没有将其创建为新的字符串,是因为在Memory类中,我已经初始化了这个字符串。为了测试是否已保存,我使用 System.out.println 打印出结果,在本例中为“Whatever”,但是当我尝试以相同的方式打印出相同的结果时类中,我得到结果“null”。有人对我的问题有什么建议吗?请随时在下面发表评论。谢谢!

更新:

下面发布了一些代码:

private void searchFieldKeyReleased(java.awt.event.KeyEvent evt) {                                        
    try {

        Memory mem = new Memory();

        String sql = "select * from userInfo where firstName= ? OR lastname = ?";
        pst=conn.prepareStatement(sql);
        pst.setString(1, searchField.getText());
        pst.setString(2, searchField.getText());

        rs=pst.executeQuery();

        if(rs.next()) {
            String firstName = rs.getString("firstName");
            String lastName = rs.getString("lastName");
            String placeOfResidence = rs.getString("placeOfResidence");
            String employmentStatus = rs.getString("employmentStatus");
            String currentEmployer = rs.getString("currentEmployer");
            String taxStatus = rs.getString("taxStatus");
            String dateOfBirth = rs.getString("dateOfBirth");
            String mother = rs.getString("mother");
            String father = rs.getString("father");
            String brother1 = rs.getString("brother1");
            String brother2 = rs.getString("brother2");
            String brother3 = rs.getString("brother3");
            String brother4 = rs.getString("brother4");
            String brother5 = rs.getString("brother5");
            String sister1 = rs.getString("sister1");
            String sister2 = rs.getString("sister2");
            String sister3 = rs.getString("sister3");
            String sister4 = rs.getString("sister4");
            String sister5 = rs.getString("sister5");
            mem.brother1ID = rs.getString("brother1ID");
            mem.brother2ID = rs.getString("brother2ID");
            mem.brother3ID = rs.getString("brother3ID");
            mem.brother4ID = rs.getString("brother4ID");
            mem.brother5ID = rs.getString("brother5ID");
            mem.sister1ID = rs.getString("sister1ID");
            mem.sister2ID = rs.getString("sister2ID");
            mem.sister3ID = rs.getString("sister3ID");
            mem.sister4ID = rs.getString("sister4ID");
            mem.sister5ID = rs.getString("sister5ID");
            mem.fatherID = rs.getString("fatherID");
            mem.motherID = rs.getString("motherID");
            System.out.println(mem.brother1ID);
            System.out.println(firstName + " " + lastName);
            firstNameField.setText(firstName);
            lastNameField.setText(lastName);
            placeOfResidenceField.setText(placeOfResidence);
            employmentStatusField.setText(employmentStatus);
            currentEmployerField.setText(currentEmployer);
            taxStatusField.setText(taxStatus);
            dateOfBirthField.setText(dateOfBirth);
            motherField.setText(mother);
            fatherField.setText(father);
            brothersField1.setText(brother1);
            brothersField2.setText(brother2);
            brothersField3.setText(brother3);
            brothersField4.setText(brother4);
            brothersField5.setText(brother5);
            sisterField1.setText(sister1);
            sisterField2.setText(sister2);
            sisterField3.setText(sister3);
            sisterField4.setText(sister4);
            sisterField5.setText(sister5);



        }

    } catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}    

这是当我尝试获得与之前相同的 System.out.println 结果时:

private void brotherViewButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                                   
    try {

        Memory mem = new Memory();

        String sql = "select * from userInfo where id=?";
        pst=conn.prepareStatement(sql);
        String IDNO = mem.brother1ID;
        System.out.println(IDNO);
        pst.setString(1, IDNO);

        rs=pst.executeQuery();

        if(rs.next()) {
            String firstName = rs.getString("firstName");
            String lastName = rs.getString("lastName");
            String placeOfResidence = rs.getString("placeOfResidence");
            String employmentStatus = rs.getString("employmentStatus");
            String currentEmployer = rs.getString("currentEmployer");
            String taxStatus = rs.getString("taxStatus");
            String dateOfBirth = rs.getString("dateOfBirth");
            String mother = rs.getString("mother");
            String father = rs.getString("father");
            String brother1 = rs.getString("brother1");
            String brother2 = rs.getString("brother2");
            String brother3 = rs.getString("brother3");
            String brother4 = rs.getString("brother4");
            String brother5 = rs.getString("brother5");
            String sister1 = rs.getString("sister1");
            String sister2 = rs.getString("sister2");
            String sister3 = rs.getString("sister3");
            String sister4 = rs.getString("sister4");
            String sister5 = rs.getString("sister5");
            System.out.println(firstName + " " + lastName);
            firstNameField.setText(firstName);
            lastNameField.setText(lastName);
            placeOfResidenceField.setText(placeOfResidence);
            employmentStatusField.setText(employmentStatus);
            currentEmployerField.setText(currentEmployer);
            taxStatusField.setText(taxStatus);
            dateOfBirthField.setText(dateOfBirth);
            motherField.setText(mother);
            fatherField.setText(father);
            brothersField1.setText(brother1);
            brothersField2.setText(brother2);
            brothersField3.setText(brother3);
            brothersField4.setText(brother4);
            brothersField5.setText(brother5);
            sisterField1.setText(sister1);
            sisterField2.setText(sister2);
            sisterField3.setText(sister3);
            sisterField4.setText(sister4);
            sisterField5.setText(sister5);



        }

    } catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    } 
}     

最佳答案

Memory 对象中的值 brother1IDnull 的原因是因为您使用的是新实例 该对象的。

我强烈建议您阅读 Java 中对象实例的范围如何,以及创建实例与使用现有实例的含义。

例如,当您这样做时:

Memory mem = new Memory();
mem.brother1ID = "1234";

mem = new Memory();
System.out.println(mem.brother1ID);

打印的值将为null。这是因为您正在使用该类的新实例。如果您想在多个方法调用中维护这些值,最好的选择可能是将 Memory 对象保存为包含您所显示的方法的任何类的实例变量。即:

private Memory memory = new Memory();

...

private void searchFieldKeyReleased(java.awt.event.KeyEvent evt) {
    // Use 'this.memory'
    this.memory.brother1ID = "1234";
    //(or)
    System.out.println(this.memory.brother1ID);
}

private void brotherViewButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // Use 'this.memory'
}

关于java - 将字符串的值保存到另一个类并检索它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984189/

相关文章:

string - Groovy:从字符串计算的时间减法

java - 使用 TabPanel 中的按钮更改选项卡

java - 将 #text 从 getNodeName 转换为字符串

c# - 有没有办法将字符串与 char 作为 const 连接?

c# - 从字符串中提取值

string - 高效的字符串排序算法

java - 要求子类设置父类的数据成员

java - 无法使用 Spring 在 AppFog 上维持 session

java - RTI DDS Qos 配置文件历史未按预期工作

python - 检测 python 字符串的开头