Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225

Переопределение метода equals (принадлежащего Object) у собственного класса Triangle

21.09.2013, 22:55. Показов 3333. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс MyTriangle, нужно переопределить equals.
Java
1
2
3
4
public class Triangle {
    @Override
    public boolean equals(Triangle _triangle) {  }
}
На override ошибка: "method does not override or implement a method from a supertype".
Не пойму в чем проблема, подскажете?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2013, 22:55
Ответы с готовыми решениями:

Переопределение hashcode и equals
Здравствуйте. Помогите пожалуйста понять ошибку "Method does not override method from its superclass". По заданию мне нужно бы создать...

Переопределение метода equals
В Хорстмане приводится следующий код, как пример переопределения метода equals(): public class Employee { ... @Override ...

Переопределение метода(класса)
Задание: написать класс прогрессии в которой каждый следующий элемент равняется квадратному корню прошлого есть класс public class...

16
185 / 160 / 49
Регистрация: 30.07.2013
Сообщений: 508
21.09.2013, 23:12
входящий параметр метода equals должен быть Object.
1
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
21.09.2013, 23:16
надо передавать параметр не класса Triangle, а класса Object
но там не все так просто, по идее еще нужно переопределять hashCode()
тут и тут очень много мнений разных

А обязательно делать именно через equals ? Не проще просто написать свой метод (не equals), где сравнивать координаты и все?

опоздал с ответом слегка
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
21.09.2013, 23:22
Если @Override убрать, то всё кошерно будет - перегруженная equals должна бы корректно работать, если ей параметром ваш класс передавать...
1
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.09.2013, 00:05  [ТС]
Цитата Сообщение от verylazy Посмотреть сообщение
надо передавать параметр не класса Triangle, а класса Object
Если
В языке Java все классы наследуются от большого суперкласса Object.
, Triangle не может восприниматься как Object?
Цитата Сообщение от verylazy Посмотреть сообщение
Не проще просто написать свой метод (не equals)
"свой метод" - так и сделал, equals без override, но все же интересно было, возможно ли переопределение.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
22.09.2013, 00:29
Цитата Сообщение от umc55555 Посмотреть сообщение
возможно ли переопределение.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package easybudda.examples;
 
public class MyInteger {
    private int value;
    
    public MyInteger(int val) {
        value = val;
    }
    
    public int get() {
        return value;
    }
    
    @Override
    public boolean equals(Object o) {
        return ( o instanceof MyInteger ) ? ( value == ((MyInteger)o).get() ) : super.equals(o);
    }
    
    public static void main(String[] args) {
        MyInteger a = new MyInteger(13);
        MyInteger b = new MyInteger(13);
        Integer c = 13;
        
        System.out.println(a.equals(b));
        System.out.println(a.equals(c));
    }
}
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.09.2013, 02:56
Цитата Сообщение от easybudda Посмотреть сообщение
Если @Override убрать, то всё кошерно будет - перегруженная equals должна бы корректно работать, если ей параметром ваш класс передавать...
нет всё будет некошерно, так как если сделать так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * Created by mutagen on 22.09.13.
 */
public class BadOverrid {
    public static void main(String[] args) {
        Object t1 = new T();
        Object t2 = new T();
        System.out.println(t1.equals(t2));
        System.out.println(t2.equals(t1));
    }
 
    static class T {
        public boolean equals(T t) {
            return true;
        }
    }
 
}
будет полная лажа )))

Java
1
2
false
false
Добавлено через 2 минуты
Цитата Сообщение от umc55555 Посмотреть сообщение
"свой метод" - так и сделал, equals без override
и теперь ваш метод в коллекциях типа Set будет отлично лагать )
Особенно если коллекция под интерфейс
2
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.09.2013, 16:54  [ТС]
Цитата Сообщение от easybudda Посмотреть сообщение
return ( o instanceof MyInteger ) ? ( value == ((MyInteger)o).get() ) : super.equals(o);
Интересно, спасибо).
Цитата Сообщение от mutagen Посмотреть сообщение
нет всё будет некошерно, так как если сделать так: ...
и теперь ваш метод в коллекциях типа Set будет отлично лагать )
Особенно если коллекция под интерфейс
Простите, ничего не понял). Прежде всего - метод, всегда возвращающий true.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.09.2013, 20:25
Цитата Сообщение от umc55555 Посмотреть сообщение
Простите, ничего не понял). Прежде всего - метод, всегда возвращающий true.
если метод не Object а ваш класс, он никогда не вызовется в случае приведения его вверх по иерархии, так как он не оверридит метода equals из Object, и вы получите проблемы.

Метод с true, а вывод программы false - специально чтобы это продемонстрировать )
1
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
23.09.2013, 20:20  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
если метод не Object а ваш класс, он никогда не вызовется в случае приведения его вверх по иерархии, так как он не оверридит метода equals из Object, и вы получите проблемы.
Крышесносно). Спасибо).
0
 Аватар для Vortal
104 / 104 / 27
Регистрация: 11.08.2011
Сообщений: 301
24.09.2013, 11:35
Дык еще надо проверить Object на null
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
24.09.2013, 14:59
Цитата Сообщение от Vortal Посмотреть сообщение
Дык еще надо проверить Object на null
Это делается одновременно с instanceof - null instanceof XXX вернет false. Показательно, что даже null instanceof Object вернет false, хотя уж Object является родителем вообще всех объектов.
0
 Аватар для Vortal
104 / 104 / 27
Регистрация: 11.08.2011
Сообщений: 301
25.09.2013, 20:08
А если входящий аргумент будет null, то не генерируется исключение NullPointerException? То есть сверяемый объект будет сверяться с null.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
25.09.2013, 20:11
Цитата Сообщение от Vortal Посмотреть сообщение
А если входящий аргумент будет null, то не генерируется исключение NullPointerException?
Неа! Пробовал a.equals(null) - выводит false без всякой ругани.
1
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
25.09.2013, 20:17
Цитата Сообщение от easybudda Посмотреть сообщение
Неа! Пробовал a.equals(null) - выводит false без всякой ругани.
Java
1
2
3
4
5
6
7
8
9
10
11
public class TestEq {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s1 = "ololo";
        String s2 = null;
        String s3 = null;
        System.out.println(s1.equals(s2)); // нормусик
//      System.out.println(s2.equals(s1)); // исключение
//      System.out.println(s2.equals(s3)); // исключение
    }
}
атата
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
25.09.2013, 22:11
verylazy, не, я про свой пример с MyInteger (несколькими постами раньше) с переопределённым equals()
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
26.09.2013, 10:55
Цитата Сообщение от Vortal Посмотреть сообщение
А если входящий аргумент будет null, то не генерируется исключение NullPointerException? То есть сверяемый объект будет сверяться с null.
Документация спасет отца русской демократии: http://docs.oracle.com/javase/... ng.Object)

For any non-null reference value x, x.equals(null) should return false.

Не по теме:

easybudda, и тесты писать не надо. ;)



Добавлено через 2 минуты
Цитата Сообщение от verylazy Посмотреть сообщение
атата
Ну а что Вы хотели - на null метод вызывать? Это известное нарушение коммутативности метода equals - a.equals(b) и b.equals(a) дают разные результаты, если одна из переменных равна null.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2013, 10:55
Помогаю со студенческими работами здесь

Переопределение equals
Добрый день, товарищи. Пытаюсь переопределить метод "equals" во вновь созданном классе. package i1; import java.util.Objects; ...

HashCode и equals (переопределение)
Здравствуйте, у меня возникла сложность с нashCode и equals. ______________________________________________________________________ ...

Переопределение equals() и hashCode()
Если есть класс Point: public class Point { private int x; private int y; public Point(int x, int y) { ...

Переопределение методов equals() и hashCode()
Дорогие форумчане, подскажите пожалуйста, как мне переопределить эти методы для моего класса? public class MyCollection implements...

Переопределение equals в классах, содержащих объекты друг друга
Здравствуйте. Как переопределить equals в классах, которые содержат в своих атрибутах объекты друг друга. Или это плохая архитектура? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru