Как использовать объект, который был вызван из метода в Java? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь выяснить, каков синтаксис для вызова объекта внутри метода ..

псевдокод:

    boolean check(Object someObject) {
        return someObject == theOtherObject;
    }

   public static void main(String args[]) {
    someClass one = new someClass();
    someClass two = new someClass();
    one.check(two);
}

Таким образом, метод check должен проверять, равны ли два объекта, но как мне указать другой объект (theOtherObject должен быть one)?

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 02 апреля 2019

Ответ одним словом: this

boolean check(Object someObject) {
    return someObject == this;
}

, который будет проверять только идентичность объекта. Вы должны переопределить равно и использовать это.

if (one.equals(two)) {
    // ...
}
0 голосов
/ 02 апреля 2019

Итак, что вы просите, так это то, что в классе java.lang уже есть команда для сравнения с объектами.

    one.equals(two)

сравнение, которое это делает, называется поверхностным сравнением. Так что если это то, что вы хотите сделать, то это сработает. Для справки, определения поверхностного сравнения, определенные geeksforgeeks.org:


Неглубокое сравнение: стандартная реализация метода equals определена в классе Java.lang.Object, который просто проверяет, ссылаются ли две ссылки на объект (скажем, x и y) на один и тот же объект. то есть он проверяет, если x == y. Поскольку у класса Object нет элементов данных, которые определяют его состояние, он также называется поверхностным сравнением.


если вы хотите провести более сложное сравнение, лучше всего было бы переопределить команду equals в одном файле класса


эта статья была бы хорошим местом для начала, чтобы узнать больше об этой теме. https://www.geeksforgeeks.org/equals-hashcode-methods-java/

0 голосов
/ 02 апреля 2019

Вы можете использовать метод boolean check(Object o) внутри SomeClass и проверить

boolean check(Object o) {
    this == (SomeClass) o;
}

Это будет работать, только если обе ссылочные переменные указывают на один и тот же объект. Более того, правильный способ проверить, являются ли два объекта значимо равными, - это использовать унаследованный метод equals и hashCode.

Переопределить equals и hashCode метод.

Почему мне нужно переопределить методы equals и hashCode в Java?

https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-

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