O que está acontecendo?

public class Banco extends Contas {

/**
 * @return the contas
 */
public ArrayList<Banco> getListaContas() {
    return listaContas;
}

/**
 * @param listaContas the contas to set
 */
public void setListaContas(ArrayList<Banco> listaContas) {
    this.listaContas = listaContas;
}

ArrayList<Banco> listaAgencias = new ArrayList<>();
Banco[] agencias = new Banco[2];
ArrayList<Banco> listaContas = new ArrayList<>();
Banco[] contas = new Banco [3];
public Banco(String nomeAgencia, String nomeConta, int saldo, int limite) {
    super(nomeAgencia, nomeConta, saldo, limite);
    this.nomeAgencia = nomeAgencia;
}

public void criarAgencia() {
    agencias = null;
    System.out.println("Nome agencia");
    sc.nextLine();
    agencias[0].setNomeAgencia(sc.nextLine());
    agencias[1].setListaContas(null);
    listaAgencias.add(agencias);//AQUI
}
public void criarConta() {
    contas = null;
    System.out.println("Nome agencia");
    sc.nextLine();
    contas[0].setNomeConta(nomeConta);
    contas[1].setNomeAgencia(nomeAgencia);
    contas[2].setLimite(limite);
}

Diz que Sem%20t%C3%ADtulo

Como contornar isso?

O problema é que listaAgencias é um ArrayList<Banco>, mas vc tá tentando colocar um Banco[] dentro dela.

Pra fazer sentido, vc teria que mudar listaAgencias para ArrayList<Banco[]>.

Ou, na linha que dá o erro, fazer algo como:

listaAgencias.add(agencias[0]);
1 curtida

Tão simples, tão simples ass:me
Multiple-facepalm-o

Aliás, no meu programa eu irei colocar essas arrays uma dentro da outra, você teria alguma dica de como acessar, por exemplo, listaAgencias[0] -> agencia[1] -> listaContas[1213] -> conta.add (conta também é um “vetor” como você viu)?

Talvez algo assim:

class Banco {
    ArrayList<Conta> listaContas;

    public void addConta(Conta c) {
        listaContas.add(c);
    }

    public Conta getConta(int id) {
        listaContas.get(id);
    }
}

class Conta {
    int id; String nome; String cpf;
    /* ... */
}

class Programa {
    static private ArrayList<Banco> listaAgencias;

    public static void main(String[] args) {
        Conta c1 = new Conta();
        Conta c2 = new Conta();
        Conta c3 = new Conta();
        Conta c4 = new Conta();

        Banco b1 = new Banco();
        b1.addConta(c1);
        b1.addConta(c2);

        Banco b2 = new Banco();
        b2.addConta(c3);
        b2.addConta(c4);

        listaAgencias.add(b1);
        listaAgencias.add(b2);

        /* ... */

        listaAgencias.get(0).getConta(0).nome;
    }
}

Vi, mas será que faz sentido? A variável contas é um array de bancos?

No código que mostrei acima, pensei em uma lista de bancos, cada banco contem várias contas, mas contas não deveria conter vários bancos.

Botei bancos, na verdade é agencia (onde você cria o cartao), então cada conta seleciona uma agencia(onde ele vai criar a conta). Nesse caso eu queria fazer um vetor de agencias, e a agencia tem nome e vetor de contas.