0

Java では、クラスの等価操作と出力操作をどのようにオーバーロードできますか?

Python のように、def __eq__(self):またはdef __str__(self):で実行できますが、Java でこれを行うにはどうすればよいでしょうか。

手動でメソッドを作成し、それを好きなように呼び出すことができることは知っていますが、演算子と関数で機能equalsする実際のメソッドがあるかどうかを知りたかったのです。==System.out.print()

誰か知っていますか?

ありがとう。

4

1 に答える 1

6

Java は、演算子のオーバーロードをサポートしていません。常に参照の等価性をテストします==

System.out.print()を使用Object.toString()して出力を生成します。toStringクラスでオーバーライドできます。

そして、equalsメソッドをオーバーライドすることについては、1 つの注意点があります。メソッドをオーバーライドする場合は、オブジェクトが s などで正しく動作するように、メソッドequalsもオーバーライドする必要があります。との間の契約の詳細については、リンク先のドキュメントを参照してください。hashCodeHashSethashCodeequals

/編集

public class Point {
    private int x;
    private int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public String toString() {
        return "(" + x + ", " + y + ")";
    }

    public static void main(String[] args) {
        System.out.println(new Point(1, 2));
    }
}
于 2013-03-21T00:42:15.380 に答える