首页 > 解决方案 > 将数据保存在向量中并在其他功能中重用

问题描述

我最近了解到我在编写代码时不应该使用全局变量,但是在这种情况下,我需要将一些数据保存在一个向量中,这样如果用户点击一个按钮,就会显示一个列表。该列表应包含存储在向量中的信息。所以我在考虑在click函数中创建向量,但是当函数结束时,向量将被删除。我也想过在main函数中创建vector,但是click函数识别不出来。那么,是否可以将信息保存在向量中,并在同一类中的其他函数中重用它,而无需对该变量进行全球化?

类似的东西:

private void btn_saveClientActionPerformed(java.awt.event.ActionEvent evt) {                                               
    Sale sale;
    String clientName = txtFied_Name.getText().toString();
    String product = txtField_product.getText().toString();

    sale = new Sale(clientName, product);

    vector.add(sale); // this is the variable with problems!
}                                              

private void btn_showListActionPerformed(java.awt.event.ActionEvent evt) {                                             

    List list = new List();
    list.addSales(vector);
    list.setVisible(true);
}                                            

标签: javavector

解决方案


我也想过在main函数中创建vector,但是click函数识别不出来。

在应用程序中,静态 voidmain()方法必须被视为一个入口点,它应该依赖类的实例来执行应用程序的逻辑和要求。因此,您应该将向量声明为您的类之一的实例字段(请注意,您应该赞成确实过时的)List。 因此,请让我在您的示例 中替换为。Vector
vectorlist

假设您的入口点类被称为MyApp.
MyApp可以声明为:

public class MyApp{

  private List<Sale> list = new ArrayList<>();
  public static void main(String[] args){
     new MyApp();
  }


  public MyApp(){
      // init an instance of the class
  }

  // ....
  private void btn_saveClientActionPerformed(java.awt.event.ActionEvent evt) {                                               
        Sale sale;
        String clientName = txtFied_Name.getText().toString();
        String product = txtField_product.getText().toString();

        sale = new Sale(clientName, product);
        // list is now accessible as it is an instance field and a 
        //  instance method of the same class can refer to it
        list.add(sale); 
  } 

}

推荐阅读