アプリ版:「スタンプのみでお礼する」機能のリリースについて

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:

A 回答 (1件)

http://docs.oracle.com/javase/jp/6/api/java/lang …
より引用

> Java 言語は、文字列連結演算子 ( + )、およびその他のオブジェクトから文字列への変換に対する特別なサポートを提供します。

> 文字列変換は Object によって定義された toString メソッドを使って実装され、Java のクラスすべてによって継承されます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Javaって賢い部分が多いんですねぇ

お礼日時:2013/04/07 20:36

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