私が使用するSystem.out.println(obj.getClass())
と、エラーは発生しません。私が理解していることからgetClass()
、クラス型を返します。文字列のみを出力するのでprintln()
、クラスの代わりに文字列println
を取得するのはなぜですか?
41995 次
4 に答える
19
Java のすべてのオブジェクトは、クラスObjectから継承します。そのドキュメントを見ると、オブジェクトを文字列に変換Object
するメソッドが指定されていることがわかります。toString
すべての非プリミティブ型 ( Class
es を含む) はs であるため、そのメソッドObject
を使用して何でも文字列に変換できます。toString
クラスは、このメソッドをオーバーライドして、文字列に変換する独自の方法を提供できます。たとえば、String
クラスをオーバーライドObject.toString
してそれ自体を返します。Class
クラスの名前を返すようにオーバーライドします。これにより、オブジェクトの出力方法を指定できます。
于 2013-05-05T14:24:51.530 に答える
4
コードを参照してください:
787 public void println(Object x) {
788 String s = String.valueOf(x);
789 synchronized (this) {
790 print(s);
791 newLine();
792 }
793 }
に注意してくださいString.valueOf(x)
。
良い質問をするためのボーナス:
632 public void print(String s) {
633 if (s == null) {
634 s = "null";
635 }
636 write(s);
637 }
そのためnull
、オブジェクトが null の場合に出力されます:)
于 2013-05-05T14:29:46.777 に答える