30年度春期午後問11(Java)設問4について質
Java初心者さん
(No.1)
設問4についてです。解説だとエがint型なのでコンパイルエラーになると記載がありますが、いまいち理解ができず困っています。また、そもそも同じものを比較してもfalseになるという場合があり得るというのが直感的に理解できません...
同一性と同値性に対する理解がそもそも甘いのかと思いますが、どなたか解説いただけるとありがたいです。
よろしくお願い致します。
同一性と同値性に対する理解がそもそも甘いのかと思いますが、どなたか解説いただけるとありがたいです。
よろしくお願い致します。
2021.01.10 12:59
管理人
(No.2)
まず「エ」がコンパイルエラーになる理由ですが、Object.equals()の引数はObject型である必要があるためです。Constant.evaluate()の戻り値はint型なので、引数の型が違うとしてコンパイルエラーとなります。
次に new Constant(9).equals(new Constant(9)) で作成される2つのConstant型のインスタンスは、保持する値は同じですが別のインスタンスです。Object.equals()は、同じインスタンスを参照する(x == yが true)場合にだけ true を返すので、上記式の結果は false となるわけです。
私自身Javaはそれほど詳しいわけではないので、もっとわかりやすく説明できる方がおられましたら、どうか追加の説明をよろしくお願い致します。
次に new Constant(9).equals(new Constant(9)) で作成される2つのConstant型のインスタンスは、保持する値は同じですが別のインスタンスです。Object.equals()は、同じインスタンスを参照する(x == yが true)場合にだけ true を返すので、上記式の結果は false となるわけです。
私自身Javaはそれほど詳しいわけではないので、もっとわかりやすく説明できる方がおられましたら、どうか追加の説明をよろしくお願い致します。
2021.01.10 14:19
Java初心者さん
(No.3)
すっきりしました!!わかりやすい説明をありがとうございました!!
2021.01.10 17:09
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告