Можно ли в Java сравнивать ссылки на экземпляры класса, если метод equals () переопределен? - PullRequest
2 голосов
/ 17 января 2012

Мне нужно сравнить 2 экземпляра класса, у которого есть переопределенный метод equals - он возвращает строку, равную конкатенации параметров.Но я должен быть уверен, что существует только 1 экземпляр.Для этого думаю проверить ссылки.

Возможно ли это в Java?

Ответы [ 3 ]

10 голосов
/ 17 января 2012

Используйте == для сравнения ссылок.Достаточно убедиться, что разные переменные ссылаются на один и тот же экземпляр.

1 голос
/ 17 января 2012

Простой способ убедиться, что существует только один экземпляр, - это использовать Enum.

public enum MyEnum {

    NameOfSingleton("aPropertyValue");

    private String aProperty;

    private MyEnum(String aProperty) {
        this.aProperty = aProperty
    }

    public getAProperty() {
        return this.aProperty;


}

Использовать его так же просто.

MyEnum.NameOfSingleton.getAProperty();

Это на самом деле не решает проблемуваш вопрос равенства, но он отвечает вашим потребностям в одноэлементном экземпляре класса.

0 голосов
/ 17 января 2012

Я не совсем уверен, что вы пытаетесь сделать, но если вам нужно убедиться, что существует только один экземпляр чего-либо, вы можете использовать для этого ключевое слово static.Есть несколько способов обеспечить это с помощью static, например, создать статическую переменную count, которая отслеживает, сколько экземпляров объекта было создано.Затем в конструкторе для объекта вы просто увеличиваете счетчик.Чтобы увидеть, существует ли более одного экземпляра объекта, просто проверьте переменную count, и она должна сообщить вам.

...