Метод Java toString (объекты) - PullRequest
       4

Метод Java toString (объекты)

1 голос
/ 13 октября 2010
class Position {

    private double x,y;
    private int id;

    public String toString(Position a){

        String words ="(" + a.x + "," +a.y + ")";
        return words;

Итак, я получаю адрес памяти, возвращенный сюда. Что я делаю неправильно? Я хочу получить фактические значения х и у, которые были установлены с помощью установщиков. У меня также есть геттеры, и я попытался вместо a.x поставить getX (), но это все равно дает мне другой адрес памяти. Что я делаю не так?

Ответы [ 4 ]

5 голосов
/ 13 октября 2010

Попробуйте:

public String toString(){

Код, который вы используете, добавляет новый метод, вместо переопределения существующего безпараметрического toString метода Object. Это означает, что старый метод по-прежнему вызывается, и он дает вывод, который вы видите.

3 голосов
/ 13 октября 2010

Вы на самом деле не переопределяете toString; скорее вы перегружаете его, определяя метод с тем же именем, но ожидающий других аргументов. Вы не передаете Position toString; он должен ссылаться на текущий экземпляр.

2 голосов
/ 13 октября 2010

Как дополнение к другим постам, почему, по вашему мнению, вам все равно нужно передать ссылку Position на метод toString(). В конце концов, метод существует в том же классе, Position. Вы можете использовать переменную / свойства напрямую без какой-либо ссылки, подобной этой.

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

Или, если вам нравится конкретная ссылка, вы можете сделать это следующим образом:

  public String toString(){
        return "(" + this.x + "," + this.y + ")";
  }

Я сделал метод одним вкладышем после рефакторинга.

Если вам интересно узнать, какие версии пользователей нравятся больше, пожалуйста, обратитесь к здесь, когда использовать this. И вот руководство / объяснение , как переопределение работает в Java .

0 голосов
/ 13 октября 2010

Так как это домашняя работа, я бы попросил вас пройти через отладчик. Ваш метод не вызывается, даже если вы ожидаете, что это так. (toString () и toString (Someobject) различаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...