[Java Question] Операции над своими типами

Статус
Закрыто для дальнейших ответов.

ql_Nik_lp

Старожил
Девелопер
Пользователь
Баллы
173
Имя в Minecraft
ql_Nik_lp
Всем доброго.
Возник тут вопрос, возможно ли научить свои типы банальным операциям?

К примеру у меня есть объект TestObj(int value1, double value2);
И к примеру у меня есть 2 экземпляра этого объекта, скажем
Код:
TestObj obj1 = new TestObj(3, 4.5D);
TestObj obj2 = new TestObj(7, 5.5D);

Хотелось бы реализовать так чтобы возможно было использование этих объектов так дабы
TestObj obj3 = obj1 + obj2 дало мне obj3 который равен (10, 10D);
Знаю что в случае со сравнением можно оверрайдить метод equals, но как быть со сложением и вычитанием?

Буду благодарен за любую помощь :)
 
Последнее редактирование:
Всем доброго.
Возник тут вопрос, возможно ли научить свои типы банальным операциям?

К примеру у меня есть объект TestObj(int value1, double value2);
И к примеру у меня есть 2 экземпляра этого объекта, скажем
Код:
TestObj obj1 = new TestObj(3, 4.5D);
TestObj obj2 = new TestObj(7, 5.5D);

Хотелось бы реализовать так чтобы возможно было использование этих объектов как
TestObj obj3 = obj1 + obj2 дало мне obj3 который равен (10, 10D);
Знаю что в случае со сравнением можно оверрайдить метод equals, но как быть со сложением и вычитанием?

Буду благодарен за любую помощь :)
Такого сделать в java нельзя.
 
Всем доброго.
Возник тут вопрос, возможно ли научить свои типы банальным операциям?

К примеру у меня есть объект TestObj(int value1, double value2);
И к примеру у меня есть 2 экземпляра этого объекта, скажем
Код:
TestObj obj1 = new TestObj(3, 4.5D);
TestObj obj2 = new TestObj(7, 5.5D);

Хотелось бы реализовать так чтобы возможно было использование этих объектов как
TestObj obj3 = obj1 + obj2 дало мне obj3 который равен (10, 10D);
Знаю что в случае со сравнением можно оверрайдить метод equals, но как быть со сложением и вычитанием?

Буду благодарен за любую помощь :)
Перегрузки операторов в Java нет.

Поведение объектов можно изменить только с помощью некоторых стандартных интерфейсов.
Например, имплементить Iterable, чтобы по объекту можно было проводить итерации
AutoClosable - объект можно будет использовать в try-с-ресурсами

Если сильно хочется, используйте груви или скалу. Там есть полная перегрузка операторов.
Плагины для bukkit запускаются, если правильно подготовить classpath. (бубен.gif)
 
Ясно-понятно.
Всем спасибо за ответы.
Наверное просто реализую методы add(Obj) sub(Obj) и тому подобные.
Еще раз благодарю.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх