0

多数のフィールド値を記録する最も簡潔な方法は? たとえば、特定の行にすべての int 型の値を出力する 6 つのフィールドがあるとします。

最も明白な解決策は、次のようにすることです。

System.out.println("renderMap() xTile: " + xTile + "  yTile: " + yTile + 
    "  maxXTile: " + maxXTile + "  maxYTile: " + maxYTile + "  xPixelOffset: " + 
    xPixelOffset + "  yPixelOffset: " + yPixelOffset);

上記のようなデバッグ行を一貫して記述する必要がある多くの変更を行っている場合、Java でこれを行うためのより簡潔で痛みの少ない方法はありますか?

上で行ったことが最も簡潔な構文である可能性があることは認めますが、それを確認 (または反論) していただければ幸いです。

私は解決策としてこれを行うことになりました(上記の私の要件よりも少し少ないですが、私はそれで生きます):

System.out.println(String.format("%d %d  %d %d  %d %d", xTile, yTile, 
    maxXTile, maxYTile, xPixelOffset, yPixelOffset));
4

1 に答える 1

0

フォーマット文字列を作成し、String.format(formatstring, object.value1, object.value2, ...) を使用します。これはそれほど簡潔ではありませんが、変数と文字列の構造が混ざり合っている代わりに、必要なものの完全な形式を記述し、次にその中に配置する値を完全に記述しているため、非常にきれいに見えます。C で printf を使用したことがある場合は、非常によく似ています。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#format (java.util.Locale、java.lang.String、java.lang.Object... )

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

これは Java には当てはまりませんが (Reflection でトリックを実行できない限り?)、Python のような言語では、すべてのオブジェクトが密かに変数名から値へのハッシュマップを持っているため、このハッシュマップを反復処理して、すべてのデバッグ文字列を自動的に構築できます。その変数名と値。

于 2013-03-18T03:35:59.383 に答える