1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Passagem de parâmetro objeto por referência

Boa tarde galera, sou iniciante em Java, e estou com a seguinte dúvida. Quando estava estudando a teoria de Java, li que não há passagem ou atribuição direta por referência em Java. A minha confusão é na execução do seguinte código:

public Livro{
  String livro;
}
public Controlador{
 public void insereLivro(Object obj){
   Livro livro = (Livro) obj;
   livro.livro = "GOT";
   System.out.println( "referencia de livro = "+livro );
   System.out.println( "referencia de obj = "+obj );
 }
}
public main(){
/*metodo main ...*/
 Livro liv0 = new Livro();
 liv0.livro = "Manual do mundo";
 System.out.println( "Valor livro antes controlador = "+liv0.livro );\\imprime : Manual do Mundo
 Controlador ctrl = new Controlador();
 ctrl.insereLivro(liv0);
 System.out.println( "referencia de livro main = "+liv0 );
 System.out.println( "Valor livro depois controlador = "+liv0.livro );\\imprime : GOT
}

Quando executo o código acima, as referências de todos os objetos é a mesma. Minha pergunta é: O Java trabalha por padrão com parâmetros do tipo Object diretamente com sua referência? OBS: Achava que o seguinte código OBJ1 = OBJ2;, O objeto OBJ1 recebia uma cópia do OBJ2.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java javadoc ou faça a sua própria pergunta.