Как реализованы методы по типу equals
? Я понимаю, конечно же, что метод equals
должен вызвать объект: собственно, в этом и вопрос. Как он так написан, что может быть вызван лишь объектом? Только сегодня что-то задумался. Если можно — пример, как реализовать подобную "фишку".
Если всё еще непонятно:
public class Main() {
public static void main(String[] args) {
equals(); // error
object.equals(...); // всё нормально.
}
}
Метод equals описан в классе Object. Так как все классы наследуются от Object, то метод equals есть у любого объекта.
В Object метод equals выглядит вот так
public boolean equals(Object obj) {
return (this == obj);
}
То есть по умолчанию объект равен только самому себе.
Многие классы переопределяют метод equals. Например класс Long
public boolean equals(Object obj) {
if (obj instanceof Long) {
return value == ((Long)obj).longValue();
}
return false;
}
То есть два объекта типа Long равны, если они содержат одинаковое значение типа long.
Автор почему-то поленился написать какая именно ошибка. Но очевидно, что нет такого метода equals()
, есть boolean equals(Object obj)
. И соответственно компилятор сообщит об этом. Трудно не заметить такую мессагу:
Main.java:12: error: method equals in class Object cannot be applied to given types;
equals();
^
required: Object
found: no arguments
reason: actual and formal argument lists differ in length
1 error
Вы для начала хотя бы с этим разобрались:)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Допустим, есть игра в которой 2 режимаПри одном режиме шарики от стен отскакивают, а при другом не отскакивают
Есть таблица в которой содержится поле типа DateTime в котором хронится дата и время некой операцииПри запросе через MS SQL Manager я вижу что есть...
Добрый день! Необходимо запустить процесс из командной строки и отследить файлы, созданные имПробовал Process Monitor - он действительно отображает...