- ベストアンサー
javaのメソッド呼び出し
javaで質問があります。メソッドを呼び出すとき、 クラス.メソッド(引数)だと思いますが、 「.」が2つあるものがあります。 どういったものでしょうか? あるプログラムに Code.PerComFlag.ReCom.equals(atmlogDTO.getatmComFlg()) のがありました。 また、javaの本に System.out.println(・・・) という記述もあります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
べつに「クラス.メソッド(引数)」と決まっているわけではありません。 「.」も2つに限らず、3つ以上でもいくつでも重ねて指定できます。 たとえば「aaa.bbb(ccc);」という式があったとします。 このとき、dddにaaaを返す「getAaa()」というメソッドがあれば、 「ddd.getAaa().bbb(ccc);」と書けますし、 さらにeeeというクラスにpublicなdddというフィールドがあれば 「eee.ddd.getAaa().bbb(ccc);」と書けるわけです。 System.out.println(...)の場合は(APIドキュメントも参照してください)、 java.lang.Systemクラスにpublicなフィールドoutがあって、 outはjava.io.PrintStream型なので、publicなprintln()メソッドがあるので、 それを呼ぶような記述をしているわけです。
その他の回答 (2)
- dekopa-
- ベストアンサー率42% (161/378)
メソッドの戻り値がクラス(のインスタンス)なんです。 System.out.println()の場合、System.outはPrintStreamを返します。そのPrintStream.println()をまた呼んでいるのです。 これを分解すると、 PrintStream outStream = System.out; outStream.println(...); という2行分の処理、という意味になります。 メソッドを呼んで、その戻り値のメソッドをまた呼んで・・・というパターンは良くあるパターンで、3つ以上つなぐこともざらです。
- MrBan
- ベストアンサー率53% (331/615)
いくつか考えられますが、 packegeの名前を明示してクラスのメンバを指定する場合や、 クラスのメンバであるクラスのメンバを参照する場合などは'.'が続きます。 提示の例だと後者ですね。 Systemのメンバにoutがあり、outのメソッドにprintlnがあり…。