Retornando Array de Objetos

Colegas boa tarde,

Hoje me vi com a seguinte dificuldade:

Tenho um array do tipo Object que armazena varias instancias da classe Pessoa

segue a classe Pessoa

Tenho uma classe chamada PessoaDao da qual faz todos os processos entre eles retornar este array de objetos que dentro possui os objetos do tipo Pessoa


Public class PessoaDao{

  public object[][] getLista(){
      
      Object[][] pessoas = new Object[3][3];

     homem = new Pessoa();
     pessoa.setNome = "João";
     pessoa.setEmail = "joão@email.com";

     mulher = new Pessoa();
     pessoa.setNome = "Marina";
     pessoa.setEmail = "marina@email.com";

     pessoas[0][0] = homem;
     pessoas[1][0] = mulher;

    return pessoas;

  }
}

O problema é que quando vou fazer um for em qualquer classe que instancia esta não consigo, olhem o código do for


...

Object[][]  lista = new PessoaDao().getLista();


 for(Object[] array  : lista ){
   System.out.println(array);
}

ele me dá o erro na linha 6 dizendo "Sintaxe erro on token “]”, Identifier expected after this token "

por favor aguardo a ajuda de vocês.

Cara, esse código aí me soa meio estranho… tem certeza que compila?
É java mesmo?

Se for… vê se não é isso que vc tah querendo…

Classe Pessoa

public class Pessoa {

    private String nome, email;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        //usando StringBuilder pra nao ficar concatenando String
        StringBuilder sb = new StringBuilder();
        sb.append("Nome: ");
        sb.append(this.getNome());
        sb.append("\n");
        sb.append("Email: ");
        sb.append(this.getEmail());
        sb.append("\n\n");
        return sb.toString();
    }
}

Classe PessoaDao

public class PessoaDao {

    public Object[] getLista() {
        Object[] pessoas = new Object[2];

        Pessoa homem = new Pessoa();
        homem.setNome("João");
        homem.setEmail("joão@email.com");

        Pessoa mulher = new Pessoa();
        mulher.setNome("Marina");
        mulher.setEmail("marina@email.com");

        pessoas[0] = homem;
        pessoas[1] = mulher;

        return pessoas;

    }
}

Classe App

public class App {
    public static void main(String[] args) {

        Object[] lista = new PessoaDao().getLista();

        for (Object object : lista) {
            //como o array e do tipo Object faz o teste antes de exibir
            if (object instanceof Pessoa) {
                System.out.println(object);
            }
        }

    }
}

Partindo do princípio que está tudo no mesmo pacote claro…

E por que não criar o array do tipo Pessoa ao invéz do tipo Object?
Seria necessário guardar objetos de outros tipos nesse mesmo array?

Bom dia, eu também achei estranho o array ser bi-dimensional, tem algum motivo especifico pra isso?

Abs.

Cara, vc não precisa usar uma matriz para isso. Um ArrayList já te atende.

É JAVA é pq eu só coloquei os trechos que interessam.

este codigo era um exemplo simplificado do meu original.

O motivo é que estou construindo um menu de categorias infinitas vindo de uma tabela unica que contem as propriedades:

id
nome
idPai

assim necessito de um array bidimensional para separar o elemento pai do filho

mas consegui resolver

eu esqueci de colocar o nome de uma varável --’

valeu pessoal até mais.