How to reference an arrayList of another class

Asked

Viewed 2,439 times

1

Personal my code is still unfinished and I am creating a library system as college work want to do as a reference to use a list array of another class in a new class. I want to use the same Book class arrayList for the Business class. I did instantiating with the same names but I do not know if it is right because I never used this mode. Thank you I will post only the name of the book class array: public Arraylist books = new Arraylist<>();

Class Emprestimodelivro

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;
            }
        }
  • would like to add an Addendum on Arraylist: here. I believe I can help you understand your question.

1 answer

1

I don’t quite understand your example, but usually to get any variable from another class you use 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 Arraylist was not in 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 your will

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

Note: it is worth mentioning that you can also force to receive another class, 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 stays like this:

public static void main(String[] args) {
    GerenciadorDeLivros gerenciador = new GerenciadorDeLivros();
    EmprestimoDeLivro emprestimo = new EmprestimoDeLivro(gerenciador);
}
  • would like to add an Addendum on Arraylist: here. I believe I can help you understand your answer.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.