※ ChatGPTを利用し、要約された質問です(原文:ocj-pの列挙型について)
なぜColorクラスに定義したtoString()メソッドが呼び出されるのでしょうか?
このQ&Aのポイント
Colorクラスに定義したtoString()メソッドが呼び出される理由について教えてください。
初めはcolor.name()で表示していましたが、なぜcolorで表示できるのかも教えてほしいです。
このコードでは、ColorクラスのtoString()メソッドが呼び出されることで、colorの文字列を取得しています。
ocj-pの勉強しています。
下記に記載したソース中の★部分について、
なぜこう記載すると、Colorクラスに定義したtoString()メソッドが呼び出されるのでしょうか?
勉強しているテキストには初めは☆で記載してあり、
「★のように直すと、Colorクラスに定義したtoString()メソッドが呼び出される」
と書いてあったのですが、その辺の解説がなかった為です。
初歩的なことなのでしょうが、どなかたか教えていただけませんでしょうか。
==================================================================
1: public class Sample01{
2:
3: public static void main(String[] args){
4: Dog[] dogs = new Dog[3];
5:
6: dogs = new Dog[]{
7: new Dog(Color.BLACK),
8: new Dog(Color.WHITE),
9: new Dog(Color.GRAY)
10: };
11: for(Dog dog:dogs){
12: System.out.println(dog);
13: }
14: }
15: }
16:
17: enum Color{
18: WHITE("Shiro"),BLACK("Kuro"),GRAY("Teru");
19: String name;
20: Color(String s){
21: name = s;
22: }
23: public String toString(){
24: return name;
25: }
26: }
27:
28: class Dog{
29: Color color;
30: Dog(Color color){
31: this.color = color;
32: }
33: public String toString(){
34: // return "(" + color.name() + ")"; ☆☆☆☆☆☆
35: return "(" + color + ")"; ★★★★★★
36: }
37: }
38:
お礼
ありがとうございます。 Javaって賢い部分が多いんですねぇ