■51804 / ) |
Re[1]: objectの内容が勝手に変わってしまいます |
□投稿者/ よねKEN (547回)-(2010/07/20(Tue) 17:16:01)
|
> でDBFを使うとAAAOLDの中身がPM20OLDにOJをコピーするとPM20OLDの中身と同じになってしまいます。 > AAAOLDの中身とPM20OLDは別のものでなければなりません。 > どうしたら回避できるでしょうか?ご教授お願いいたします。
「AAAOLD = MKST.OJ;」というコードは、配列の要素のコピーではなく、配列の参照のコピーです。 AAAOLDとMKST.OJが指す配列は同じ配列です。
配列は参照型ですので、たとえば整数を代入するようにはなりません。 参照型と値型の違いについて調べてみてください。
現状のコードで最小限の修正で済ませるなら、以下の2つの方法が考えられます。
(1) DBFメソッドの先頭で 「MKST.OJ = new Object[200];」と書いてOJの配列インスタンスを初期化する (2) 「AAAOLD = MKST.OJ;」の部分をArray.Copyメソッドを使った配列のコピー処理に書き換える
上記のどちらも応急処置的な方法であり、まったくお勧めではありません。
根本的な対応としては、DBFメソッドでグローバルな配列に結果をセットするのではなく、 そもそも結果の配列自体を返せばよいと思います。
今は、処理結果の成否を0 or 1で返しているようですが、 この戻り値として配列を返せばよい、という意味です。 処理が失敗したときはnullを返すようにすれば成否の判断もできます。
あるいはどうしても成否を表すステータスを戻り値として返したいなら、 最終のパラメータに配列インスタンスを受け取るパラメータを用意し、 その配列に対して各要素をセットすればよいです。
|
|