次のようなコンストラクターを作成する場合、コンストラクターについて質問があります。
Point originOne = new Point(23, 94);
私がそれを正しく理解していれば、originOne は 23 と 94 を指しています。System.out.println(originOne) で印刷しようとすると、これらの値が得られません。なぜですか?
前もって感謝します!=)
次のようなコンストラクターを作成する場合、コンストラクターについて質問があります。
Point originOne = new Point(23, 94);
私がそれを正しく理解していれば、originOne は 23 と 94 を指しています。System.out.println(originOne) で印刷しようとすると、これらの値が得られません。なぜですか?
前もって感謝します!=)
クラス Point の toString() 関数をオーバーライドして、希望どおりに印刷できると確信しています。例:
@Override
public String toString() {
return this.X + "IEATBABYCLOWNS" + this.Y;
}
Point
ではないと仮定しjava.awt.Point
ます。
(System.out is a ) のオーバーロードされたメソッドの 1 つはオブジェクトをパラメーターとして取り、オブジェクトを使用してオブジェクトの文字列表現を取得し、それを出力するためtoString()
、Point
クラスをオーバーライドする必要があります。PrintStream#println()
PrintStream
toString()
java.io.PrintStream#println(Object) :
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
java.lang.String#valueOf(Object) :
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
クラスのオーバーライドは、メソッドとその実装をその中に追加するのと同じくらい簡単です。
@Override
public String toString() {
return "x = " + x + " - y = " + y;
}
System.out.println(originOne);
これは、そのオブジェクトのクラスの toString メソッドを呼び出します。オーバーライドしなかったので、Object クラスの toString を呼び出します。
java.awt.Point.toString() の API の説明:
Returns a string representation of this point and its location in the (x,y)
coordinate space. This method is intended to be used only for debugging
purposes, and the content and format of the returned string may vary between
implementations. The returned string may be empty but may not be null.
ご覧のとおり、出力は使用する JVM によって異なり、必要なものが得られるとは限りません。
println を次のように変更します。
System.out.println("[" + originOne.getX() + ", " + originOne.getY() + "]")
これを試して:
System.out.println(originOne.getX() + " " + originOne.getY());
これを試して
メソッドをオーバーライドしtoString
ます。あなたのケースについては以下を参照してください
package test;
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Point point = new Point(23, 94);
System.out.println(point);
}
@Override
public String toString() {
return "x : " + x + " y: "+ y;
}
}