How to reference an arrayList of another class

1

Personally my code is still unfinished and I'm creating a library system how college work I want to do as a reference to use an array list of another class in a new class. I want to use the same ClassList array as the Book class for the BookLoad class. I instanced with the same names but I do not know if this is correct because I never used this mode. Thank you I will post only the array name of the book class: public ArrayList books = new ArrayList

();

Book Loan Class

public class EmprestimoDeLivros {
public String status1 = "Disponivel";
public String status2 = "Emprestado";
public int escolhaDoLivro;

static int escolha;

static Scanner escolhaInput = new Scanner(System.in);
// leitores
static Scanner userInput = new Scanner(System.in);

public ArrayList<Livro> livros = new ArrayList<>();
public ArrayList<Leitor> leitores = new ArrayList<>();

public static void menuEmprestimo() {
    System.out.println("1- Emprestar um livro.");
    System.out.println("2- Devolver umlivro.");
    System.out.println("3- Menu Principal");
    System.out.println("0- Sair");

    System.out.println("> Entre com sua opcao aqui: ");
    escolha = escolhaInput.nextInt();// Entrada da escolha).
}

public void emprestaLivro() {
    System.out
            .println("---------------------------------------------------------");
    System.out
            .println("> Aqui estao todos os livros registrados na biblioteca: ");
    System.out
            .println("---------------------------------------------------------");

    // Adicionar Funcao que ira chamar a lista de livros a exibir

    while (escolha == 3) {
        laco1: while (escolha == 1) {
            System.out
                    .println("\n\n> Escolha um livro da lista e digite seu numero para escolhe-lo: ");
            escolhaDoLivro = escolhaInput.nextInt() - 1;// Registro do livro
            if (escolhaDoLivro > livros.size()) {
                System.out
                        .println("> O numero do livro que você digitou nao existe!");
                escolha = 3;
            } else if (escolhaDoLivro <= livros.size()) {
                break laco1;
            }
        }
    
asked by anonymous 30.05.2016 / 06:47

1 answer

1

I do not quite understand your example, but generally to get any variable of another class you use by some method or if the attribute is public you can call it directly.

The class below contains a list of books.

public class GerenciadorDeLivros {
    public ArrayList<Livro> livros = new ArrayList<>();

    public ArrayList<Livro> getLivros() {
        return livros;
    }

}

Note that it has a method that would only be "mandatory" (in this case) if the ArrayList was not public.

In the class below it requires you to give the class a list.

public class EmprestimoDeLivro {
    public ArrayList<Livro> livros = new ArrayList<>();

    public EmprestimoDeLivro(ArrayList<Livro> livros) {
        this.livros = livros;
    }       
}

Now you can use the will

public static void main(String[] args) {
        GerenciadorDeLivros gerenciador = new GerenciadorDeLivros();
        EmprestimoDeLivro emprestimo = new EmprestimoDeLivro(gerenciador.livros);
    }

Note: it is worth noting that you can also force another class, such as the class that manages the list.

public class EmprestimoDeLivro {
    public GerenciadorDeLivros gerenciador;

    public EmprestimoDeLivro(GerenciadorDeLivros gerenciador) {
        this.gerenciador = gerenciador;
    }

    public void operacaoComALista(){
        gerenciador.livros.add(new Livro());
        //Outras Operações...
    }
}

And the new main looks like this:

public static void main(String[] args) {
    GerenciadorDeLivros gerenciador = new GerenciadorDeLivros();
    EmprestimoDeLivro emprestimo = new EmprestimoDeLivro(gerenciador);
}
    
30.05.2016 / 07:53