プロが教えるわが家の防犯対策術!

クラス型変数の中身はメモリアドレスが入っていて、参照値になっている教えて頂いたのですが、具体的に何かその参照先のクラスの方の中で定義されているものを指しているのでしょうか。
例えば以下の例でいうと
InputEstimateDtoのクラスに含まれている
String shouhin_name
Int Shouhin_price
のいずれかというような値をdtoを通して指しているのでしょうか?

InputEstimateDto dto = (InputEstimateDto) estimateSheetService.loadBySlipId(InputEstimateForm.estimateSheetId);

質問者からの補足コメント

  • どう思う?

    右側で処理された商品の名前や金額以外の
    何か新しいデータ(名前や金額以外)に名前付けをしていてそのデータのメモリの参照値が入っていると想像すればいいでしょうか?

      補足日時:2019/08/11 09:41

A 回答 (3件)

No.2です。



> 右側で処理された商品の名前や金額以外の
> 何か新しいデータ(名前や金額以外)に名前付けをしていてそのデータのメモリの参照値が入っていると想像すればいいでしょうか?

InputEstimateDto dto = (InputEstimateDto) estimateSheetService.loadBySlipId(InputEstimateForm.estimateSheetId);

の estimateSheetService.loadBySlipId の仕様が不明ですが
式から判断する限りでは、InputEstimateDto型(にキャスト可能な型)のインスタンスを生成して、その参照先(アドレス)を返すはずです。

つまり、No.2で説明した様に、shouhin_nameやShouhin_priceなどの変数の使用サイズの合計がインスタンスのエリアとしてメモリ上に確保されて、変数dtoは確保されたエリアの先頭アドレスを指す(参照する)ことになります。

「何か新しいデータ」というものはありません。
    • good
    • 1
この回答へのお礼

何度もすみません。ありがとうございました。何か具体的な値を指したり、入ってる訳ではないのですね。

お礼日時:2019/08/11 21:42

ざっくりとした説明です。



Aというクラスに、a, bというインスタンス変数が定義されているとします。
変数aの値を格納するのに4バイト、bという変数の値を格納するの6バイトのエリアが必要とします。

A obj = new A() としてクラスAのインスタンスを生成すると、メモリ空間のどこかに変数a,bの必要エリアの合計10バイトが確保されます。
そしてA型変数objには、その確保された10バイトのエリアの先頭アドレスが格納されます。

確保された10バイトのエリアの内訳を、0~3バイト目を変数aのエリア、4~9バイト目を変数bのエリアと定義されているとします。

仮にobjがアドレス100を指しているとすると、
obj.a は、100に変数aのオフセット値(+0)を足したアドレス100を指して、変数aのエリアに対してアクセスすることになります。
obj.b は、100に変数bのオフセット値(+4)を足したアドレス104を指して、変数bのエリアに対してアクセスすることになります。
    • good
    • 0

ちょっと文章の意味がわかんない. 「具体的に何かその参照先のクラスの方の中で定義されているものを指している」「いずれかというような

値をdtoを通して指している」ってどういうこと?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!