实例化里面的对象
Instatiate Object inside for
我在 For 外部实例化一个对象并像这样更改值:
NotaCaract dadosNota = aux.getListaNotasInicial().createNewNotaCaract();
for(int i=0; i< saida.getListaCompletaProds().size(); i++){
seqIdNota = saida.getListaCompletaProds().getDadosCompletosProd(i).getIdNota().getIntValue();
dadosNota.getIdNota().setIntValue(seqIdNota);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqNotaDesFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaDesFornecedor().getIntValue();
dadosNota.getIdNota().setIntValue(seqNotaDesFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqNotaDesMorada = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqMorada().getIntValue();
dadosNota.getIdNota().setIntValue(seqNotaDesMorada);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqNotaMoradaFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaMoradaFornecedor().getIntValue();
dadosNota.getIdNota().setIntValue(seqNotaMoradaFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqFinalidadeFinanciamento = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqFinalidadeFinanciamento().getIntValue();
dadosNota.getIdNota().setIntValue(seqFinalidadeFinanciamento);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqJustificacao = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqJustificacao().getIntValue();
dadosNota.getIdNota().setIntValue(seqJustificacao);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqObservacaoAmbitoProposta = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqObservacaoAmbitoProposta().getIntValue();
dadosNota.getIdNota().setIntValue(seqObservacaoAmbitoProposta);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
}
假设只有第一个实例的值为 1,所有其他值为 0。
我的最终列表 aux.getListaNotasInicial() 将全部为 0。
但是当我这样做时:
for(int i=0; i< saida.getListaCompletaProds().size(); i++){
NotaCaract dadosNota = aux.getListaNotasInicial().createNewNotaCaract();
seqIdNota = saida.getListaCompletaProds().getDadosCompletosProd(i).getIdNota().getIntValue();
dadosNota.getIdNota().setIntValue(seqIdNota);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
NotaCaract dadosNotaDesFornecedor = aux.getListaNotasInicial().createNewNotaCaract();
seqNotaDesFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaDesFornecedor().getIntValue();
dadosNotaDesFornecedor.getIdNota().setIntValue(seqNotaDesFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNotaDesFornecedor);
NotaCaract dadosNotaDesMorada = aux.getListaNotasInicial().createNewNotaCaract();
seqNotaDesMorada = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqMorada().getIntValue();
dadosNotaDesMorada.getIdNota().setIntValue(seqNotaDesMorada);
aux.getListaNotasInicial().addNotaCaract(dadosNotaDesMorada);
NotaCaract dadosNotaMoradaFornecedor = aux.getListaNotasInicial().createNewNotaCaract();
seqNotaMoradaFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaMoradaFornecedor().getIntValue();
dadosNotaMoradaFornecedor.getIdNota().setIntValue(seqNotaMoradaFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNotaMoradaFornecedor);
NotaCaract dadosNotaFinalidadeFinanciamento = aux.getListaNotasInicial().createNewNotaCaract();
seqFinalidadeFinanciamento = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqFinalidadeFinanciamento().getIntValue();
dadosNotaFinalidadeFinanciamento.getIdNota().setIntValue(seqFinalidadeFinanciamento);
aux.getListaNotasInicial().addNotaCaract(dadosNotaFinalidadeFinanciamento);
NotaCaract dadosNotaJustificacao = aux.getListaNotasInicial().createNewNotaCaract();
seqJustificacao = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqJustificacao().getIntValue();
dadosNotaJustificacao.getIdNota().setIntValue(seqJustificacao);
aux.getListaNotasInicial().addNotaCaract(dadosNotaJustificacao);
NotaCaract dadosNotaObservacaoAmbitoProposta = aux.getListaNotasInicial().createNewNotaCaract();
seqObservacaoAmbitoProposta = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqObservacaoAmbitoProposta().getIntValue();
dadosNotaObservacaoAmbitoProposta.getIdNota().setIntValue(seqObservacaoAmbitoProposta);
aux.getListaNotasInicial().addNotaCaract(dadosNotaObservacaoAmbitoProposta);
}
我的最终列表 aux.getListaNotasInicial() 将具有我想要的值。为什么我必须在循环内实例化多个对象才能使用它们的值,而我只能实例化 1 并根据需要更改他的值?
PS:我的平台只支持Java6
泰
当您实例化一个对象时,您是在保留一个内存位置并将该对象存储在其中(连同它的值)。因此,例如,在第一种情况下,您只实例化一个对象,并为其保留一个内存位置。当您只实例化一个对象并更改它的值时,每次更改值时,您都会覆盖 该值。
此外,当你只声明一个对象的实例并多次将其添加到一个数组中时,你实际上是在添加同一个对象(内存位置)。因此,您的数组将只包含对对象的最后一次已知修改,因为所有以前的数据都被覆盖了。这就是为什么您必须声明对象的多个实例,以便保留多个内存位置并保存所有不同的值。
我在 For 外部实例化一个对象并像这样更改值:
NotaCaract dadosNota = aux.getListaNotasInicial().createNewNotaCaract();
for(int i=0; i< saida.getListaCompletaProds().size(); i++){
seqIdNota = saida.getListaCompletaProds().getDadosCompletosProd(i).getIdNota().getIntValue();
dadosNota.getIdNota().setIntValue(seqIdNota);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqNotaDesFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaDesFornecedor().getIntValue();
dadosNota.getIdNota().setIntValue(seqNotaDesFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqNotaDesMorada = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqMorada().getIntValue();
dadosNota.getIdNota().setIntValue(seqNotaDesMorada);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqNotaMoradaFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaMoradaFornecedor().getIntValue();
dadosNota.getIdNota().setIntValue(seqNotaMoradaFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqFinalidadeFinanciamento = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqFinalidadeFinanciamento().getIntValue();
dadosNota.getIdNota().setIntValue(seqFinalidadeFinanciamento);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqJustificacao = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqJustificacao().getIntValue();
dadosNota.getIdNota().setIntValue(seqJustificacao);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
seqObservacaoAmbitoProposta = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqObservacaoAmbitoProposta().getIntValue();
dadosNota.getIdNota().setIntValue(seqObservacaoAmbitoProposta);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
}
假设只有第一个实例的值为 1,所有其他值为 0。 我的最终列表 aux.getListaNotasInicial() 将全部为 0。
但是当我这样做时:
for(int i=0; i< saida.getListaCompletaProds().size(); i++){
NotaCaract dadosNota = aux.getListaNotasInicial().createNewNotaCaract();
seqIdNota = saida.getListaCompletaProds().getDadosCompletosProd(i).getIdNota().getIntValue();
dadosNota.getIdNota().setIntValue(seqIdNota);
aux.getListaNotasInicial().addNotaCaract(dadosNota);
NotaCaract dadosNotaDesFornecedor = aux.getListaNotasInicial().createNewNotaCaract();
seqNotaDesFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaDesFornecedor().getIntValue();
dadosNotaDesFornecedor.getIdNota().setIntValue(seqNotaDesFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNotaDesFornecedor);
NotaCaract dadosNotaDesMorada = aux.getListaNotasInicial().createNewNotaCaract();
seqNotaDesMorada = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqMorada().getIntValue();
dadosNotaDesMorada.getIdNota().setIntValue(seqNotaDesMorada);
aux.getListaNotasInicial().addNotaCaract(dadosNotaDesMorada);
NotaCaract dadosNotaMoradaFornecedor = aux.getListaNotasInicial().createNewNotaCaract();
seqNotaMoradaFornecedor = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqNotaMoradaFornecedor().getIntValue();
dadosNotaMoradaFornecedor.getIdNota().setIntValue(seqNotaMoradaFornecedor);
aux.getListaNotasInicial().addNotaCaract(dadosNotaMoradaFornecedor);
NotaCaract dadosNotaFinalidadeFinanciamento = aux.getListaNotasInicial().createNewNotaCaract();
seqFinalidadeFinanciamento = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqFinalidadeFinanciamento().getIntValue();
dadosNotaFinalidadeFinanciamento.getIdNota().setIntValue(seqFinalidadeFinanciamento);
aux.getListaNotasInicial().addNotaCaract(dadosNotaFinalidadeFinanciamento);
NotaCaract dadosNotaJustificacao = aux.getListaNotasInicial().createNewNotaCaract();
seqJustificacao = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqJustificacao().getIntValue();
dadosNotaJustificacao.getIdNota().setIntValue(seqJustificacao);
aux.getListaNotasInicial().addNotaCaract(dadosNotaJustificacao);
NotaCaract dadosNotaObservacaoAmbitoProposta = aux.getListaNotasInicial().createNewNotaCaract();
seqObservacaoAmbitoProposta = saida.getListaCompletaProds().getDadosCompletosProd(i).getProdutosLeasing().getSeqObservacaoAmbitoProposta().getIntValue();
dadosNotaObservacaoAmbitoProposta.getIdNota().setIntValue(seqObservacaoAmbitoProposta);
aux.getListaNotasInicial().addNotaCaract(dadosNotaObservacaoAmbitoProposta);
}
我的最终列表 aux.getListaNotasInicial() 将具有我想要的值。为什么我必须在循环内实例化多个对象才能使用它们的值,而我只能实例化 1 并根据需要更改他的值?
PS:我的平台只支持Java6 泰
当您实例化一个对象时,您是在保留一个内存位置并将该对象存储在其中(连同它的值)。因此,例如,在第一种情况下,您只实例化一个对象,并为其保留一个内存位置。当您只实例化一个对象并更改它的值时,每次更改值时,您都会覆盖 该值。
此外,当你只声明一个对象的实例并多次将其添加到一个数组中时,你实际上是在添加同一个对象(内存位置)。因此,您的数组将只包含对对象的最后一次已知修改,因为所有以前的数据都被覆盖了。这就是为什么您必须声明对象的多个实例,以便保留多个内存位置并保存所有不同的值。