Problemas com Vector  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Cristiano de Barros
JavaBaby
[Avatar]

Membro desde: 16/03/2008 21:11:04
Mensagens: 78
Localização: Florianópolis
Offline

Olá,
Estou fazendo um trabalho do meu curso, e não estou conseguindo alterar dados de um objeto dentro de um Vector. Eu possuo um objeto chamado Obra, que armazena dados de um livro, dentro desse objeto existe um boolean chamado "disponibilidade" para dizer se a obra está disponível ou não para locação.
O que eu preciso é mudar essa "disponibilidade" para false para identificar que a obra já está locada e não realizar uma nova locação.

Classe Obra:



Classe Principal:



Como eu poderia fazer isso?
Quem puder me ajudar eu agradeço!
Cristiano de Barros
JavaBaby
[Avatar]

Membro desde: 16/03/2008 21:11:04
Mensagens: 78
Localização: Florianópolis
Offline

Ôpa, parece que consegui...

Parece que quando eu fiz uma cópia do objeto da posição que eu queria com o comando:


Quando eu altero a cópia dela:


a Obra dentro do Vector sofre as alterações tbm...
Não sei se foi uma espécie de passagem de valor por referência...
Será que alguem pode me explicar?
Ou se conhecerem alguma maneira melhor de fazer isso...

Agradeço pela atenção.
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

Em primeiro lugar... bem-vindo ao GUJ!

Não use Vector, use List (e ArrayList). Esse tópico explica como e porque:
http://www.guj.com.br/posts/list/74068.java#389435

Também seria uma boa você especificar o tipo da sua lista com os generics. No link ali em cima tem um exemplo de como fazer isso. Isso não só torna a aplicação mais segura como mais fácil, já que você vai evitar casts.

Finalmente, você não fez uma cópia ao fazer:


Todos as variáveis de objetos em java são baseados em referências, que nada mais são do que um "ponteiro bem comportado" para o objeto. Quando vc faz esse igual, vc faz uma cópia por valor dessa referência, e não do objeto em si.

This message was edited 1 time. Last update was at 17/03/2008 00:27:31


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
dm_thiago
JavaEvangelist
[Avatar]

Membro desde: 14/02/2007 04:23:55
Mensagens: 305
Offline

Isso é a cara dos exercícios do Tite, por acaso você é aluno dele?

Bom, só repetindo o que já foi falado, afinal não custa

Sempre que você cria uma nova variavel e aponta ela para um objeto já existente, você não está copiando o objeto, e sim apontando para ele com essa nova referencia. Assim, se caso uma das referencias alterarem algo no objeto, a outra referencia vai ter a mesma alteração (afinal, era o mesmo objeto!).

Agora um conselho: tente criar mais métodos. O método cadastro obra tem quase 100 linhas! Você pode dividir esse método em vários métodos menores. Isso facilitaria muito a manutenção do seu código.
Cristiano de Barros
JavaBaby
[Avatar]

Membro desde: 16/03/2008 21:11:04
Mensagens: 78
Localização: Florianópolis
Offline

O professor que tenho aula é o Rodrigo Borges, não sei se ele tem algum apelido...
Ele dá aula aqui no Senai de São José

Quanto a ajuda dos meus amigos do GUJ:
Obrigado pela ajuda, vocês são muito claros em suas explicações,
daí fica facil de entender.
Valeu mesmo!
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team