Boa Devs, segue resolução do Desafio, Os comentarios estão em inglês por que estou treinando meu inglês.
package br.com.bytebank.banco.modelo;
public class GuardadorDeContas {
//Attributes
private Object[] referencias;
private int posicaoLivre;
//Constructor
public GuardadorDeContas() {
this.referencias = new Object[10];
this.posicaoLivre = 0;
}
//Insert new Object
public void adiciona(Object ref) {
this.referencias[this.posicaoLivre] = ref;
this.posicaoLivre++;
}
//Number of objects
public int getQuantidadeDeElementos() {
return this.posicaoLivre;
}
//Pull object reference
public Object getReferencia(int pos) {
return this.referencias[pos];
}
}
Nessa classe eu optei por fazer um cast nessa linha Conta ref = (Conta) guardador.getReferencia(1); por que o que eu queria trazer era uma conta e e caso nessa posição tivesse qualquer outra coisa teriamos uma exceção e assim ja fiz o tratamento da mesmo.
package br.com.bytebank.banco.test;
import br.com.bytebank.banco.modelo.*;
public class Teste {
public static void main(String[] args) {
//-->Start Main<--//
//Call constructor class GuardadorDeContas
GuardadorDeContas guardador = new GuardadorDeContas();
//Create news Objects
Conta cc1 = new ContaCorrente(1234,4321);
Conta cc2 = new ContaCorrente(4321,1234);
//Insert reference in list
guardador.adiciona(cc1);
guardador.adiciona(cc2);
//Create attribute for verification array length
int tamanho = guardador.getQuantidadeDeElementos();
System.out.println(tamanho);
//Call Object in specific position
try{
Conta ref = (Conta) guardador.getReferencia(1);
System.out.println(ref.getNumero());
}catch (Exception ex) {
System.out.println(ex.getMessage());
}
//-->End Main<--//
}
}