Recursividade em classes java

3 respostas
java
M

Eu cheguei com este com este código para meu professor, e ele disse que dentro da orientação a objeto isto era proibido, pois se tratava de recursividade de classes, e eu gostaria de saber se é mesmo proibido e porque é proibido, ele simplesmente falou que não pode e não deu nenhuma explicação

Intent intencao = new Intent(JogoActivity.this, JogoActivity.class);
intencao.putExtra("xix", iPlacar[0]);
intencao.putExtra("bola", iPlacar[1]);
intencao.putExtra("velha", iPlacar[2]);
startActivity(intencao);
finish();

3 Respostas

K

Não há problema conceitual nenhum (valha o duplo negativo!) em ter uma classe que possua campos que referenciem instancias da mesma classe.

Isto é tão normal que é assim que são implementadas coisas básicas como são as listas encadeadas:

class ElementoDaLista
{
    Object dados;
    ElementoDaLista proximoElemento;
}

Exemplo não-ficticio do codigo usado nas bibliotecas Java: http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/classes/java/util/LinkedList.java#l957


Outro exemplo disto é quando uma classe possui uma coleção de itens “filhos” e cada um dos itens “filhos” possui uma referencia para a coleção “pai”:

class Colecao {
    ItemDaColecao[] itens;
    ....
}

class ItemDaColecao {
    Colecao colecao;

    public ItemDaColecao(Colecao dono) {
      this.colecao = dono;
    }
    ...
}

Agora não entendi exatamente onde há “recursão” no seu exemplo.

M

Eu inicio uma Activity com nome JogoActivity dentro de uma Activity já aberta, assim eu estou instanciando um objeto dentro do mesmo objeto

staroski

E qual o problema?

Seu professor realmente disse que na orientação à objetos é proibido um objeto de uma classe criar objetos de sua própria classe?

Será que que ele não quis dizer que, para a modelagem do problema proposto não era permitido fazer isso.

O que exatamente você precisa fazer e como você fez?

Criado 10 de maio de 2019
Ultima resposta 10 de mai. de 2019
Respostas 3
Participantes 3