How can I persist data using ArrayList?

1

I need my ArrayList data structure to be visible in more than one method of my Products class.

I'm working as follows:

package estoque;

import java.awt.Component;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.util.ArrayList;

public class produtos {

   public static void cadastro() {
      ArrayList<String> Produto = new ArrayList<>();
      JTextField field1 = new JTextField();
      JTextField field2 = new JTextField();
      JTextField field3 = new JTextField();
      Object[] message = {
         "Código:", field1,
         "Descrição:", field2,
         "Quantidade:", field3};
      Component parent = null;
      int option = JOptionPane.showConfirmDialog(parent, message, "Cadastro de Produtos", JOptionPane.OK_CANCEL_OPTION);
      if (option == JOptionPane.OK_OPTION) {
         String codigo = field1.getText();
         String descricao = field2.getText();
         String quantidade = field3.getText();

         if (codigo.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Por favor, preencha o campo Código!");
            cadastro();
         } else if (descricao.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Por favor, preencha o campo Descrição!");
            cadastro();
         } else if (quantidade.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Por favor, preencha o campo Quantidade!");
            cadastro();
         } else {
            Produto.add(codigo + ' ' + descricao + ' ' + quantidade);
            JOptionPane.showMessageDialog(null, "Produto cadastrado com sucesso!");
            System.out.println(Produto);
            Estoque.menu();
         }
      }
   }

   public static void listar() {
      JOptionPane.showMessageDialog(null, " Código - Descrição - Produto\n", "Lista de Produtos", 1);
   }

}

From the menu option I access the Register and register a product that will be stored in ArrayList<String> Produto = new ArrayList<>();

Then I return to another class called Menu and select the List option, which accesses the list () method;

In this method the ArrayList is not global, so I can not access it, how can I make it global to read in this method?

    
asked by anonymous 09.03.2016 / 18:53

1 answer

1

You can set ArrayList<String> as an attribute of the class, so that the scope of the entire class has access to the value, so you can use and change it in any method of it:

public class Produtos {
  private List<String> produtos;

  public void cadastro() {
    produtos = new ArrayList<String>();
    produtos.add("seu produto");
  }

  public void listar() {
    //Os produtos estarão disponíveis aqui também, caso a lista esteja inicializada
    if (produtos != null) {
      for (String prod : produtos) {
        System.out.println(prod);
      }
    }
  }

}
    
09.03.2016 / 19:38