Как отключить масштабирование двумя пальцами в Картах на мобильных устройствах с помощью JavaScript API?

toString () возвращает строковое / текстовое представление объекта. Обычно используется для диагностических целей, таких как отладка, ведение журнала и т. Д. Метод toString () используется для чтения значимых деталей объекта.

Он автоматически вызывается, когда объект передается println, print, printf, String.format (), assert или оператор конкатенации строк.

Реализация toString () по умолчанию в классе Object возвращает строку, состоящую из имени класса этого объекта, за которым следует знак @ и шестнадцатеричное представление без знака хэш-кода этого объекта, используя следующую логику,

getClass().getName() + "@" + Integer.toHexString(hashCode())

Например, следующий

public final class Coordinates {

    private final double x;
    private final double y;

    public Coordinates(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public static void main(String[] args) {
        Coordinates coordinates = new Coordinates(1, 2);
        System.out.println("Bourne's current location - " + coordinates);
    }
}

печатает

Bourne's current location - Coordinates@addbf1 //concise, but not really useful to the reader

Теперь, переопределяя toString () в классе Coordinates, как показано ниже,

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

приводит к

Bourne's current location - (1.0, 2.0) //concise and informative

. Полезность переопределения toString () становится еще больше, когда метод вызывается в коллекциях содержащие ссылки на эти объекты. Например, следующий

public static void main(String[] args) {
    Coordinates bourneLocation = new Coordinates(90, 0);
    Coordinates bondLocation = new Coordinates(45, 90);
    Map locations = new HashMap();
    locations.put("Jason Bourne", bourneLocation);
    locations.put("James Bond", bondLocation);
    System.out.println(locations);
}

вместо

печатает

{James Bond=(45.0, 90.0), Jason Bourne=(90.0, 0.0)}

,

{James Bond=Coordinates@addbf1, Jason Bourne=Coordinates@42e816}

Несколько указателей реализации,

  1. Вы почти всегда должны переопределять метод toString (). . Один из случаев, когда переопределение не требуется, - это классы служебных программ, которые группируют статические методы утилиты в порядке java.util.Math . Случай переопределения, который не требуется, довольно интуитивно понятен; почти всегда вы знаете.
  2. Возвращаемая строка должна быть кратким и информативным, в идеале без объяснения.
  3. По крайней мере, поля, используемые для установления эквивалентности между двумя разными объектами, т.е. полями используемый в реализации метода equals () , должен быть выплёвлен методом toString ().
  4. Предоставить аксессуаров / геттеров для всех полей экземпляра, которые содержатся в возвращаемой строке , Например, в классе «Координаты»
    public double getX() {
        return x;
    }
    public double getY() {
        return y;
    }
    

Полный охват метода toString () приведен в 10-м номере книги «Эффективное Java ™, второе издание» Джоша Блоха.

13
задан Basj 10 April 2018 в 21:13
поделиться