Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Отловить изменение размеров / 3 сообщений из 3, страница 1 из 1
22.08.2014, 18:03
    #38727031
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отловить изменение размеров
Мне нужно в компоненте обработать событие своих "изменение размеров". Как это делать, идеологически, правильно? Вызвать addComponentListener() или перекрыть метод класса? Если перекрыть метод, то какой? Фактически изменение размеров происходит в методе reshape(), но он помечен как deprecated и рекомендуется к использованию setBounds(), а setBounds() просто вызывает reshape()

И еще вопрос - обычно, если метод помечается как deprecated, то в нем происходит только вызов правильного метода. А в Java, я смотрю, делается наоборот - сплошь по исходникам из новых методов вызываются deprecated методы. Это зачем так делается?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
25.08.2014, 09:25
    #38727791
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отловить изменение размеров
_Vasilisk_Мне нужно в компоненте обработать событие своих "изменение размеров".
Что значит "своих"?

_Vasilisk_Как это делать, идеологически, правильно? Вызвать addComponentListener() или перекрыть метод класса? Если перекрыть метод, то какой? Фактически изменение размеров происходит в методе reshape(), но он помечен как deprecated и рекомендуется к использованию setBounds(), а setBounds() просто вызывает reshape()
Если работает через слушателя, то лучше через него. Это позволяет уменьшить связность классов. Но, в Swing, часто бывает что слушатели работают уже пост-фактум. А какое-то действие надо предотвратить. Тогда только переопределением метода.

_Vasilisk_И еще вопрос - обычно, если метод помечается как deprecated, то в нем происходит только вызов правильного метода. А в Java, я смотрю, делается наоборот - сплошь по исходникам из новых методов вызываются deprecated методы. Это зачем так делается?
Java требует обратной совместимости. Новые методы нужны чтобы что-то изменить. Если старый код, вызовет старый метод, а тот вызовет новую реализацию, то есть не малый шанс сломать обратную совместимость. Если новый метод вызывает старый код, но добавляет что-то в него, то старый код может вызывать старые методы не опасаясь нововведений.
...
Рейтинг: 0 / 0
26.08.2014, 19:41
    #38729445
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отловить изменение размеров
BlazkowiczЧто значит "своих"?В самом объекте поймать момент изменения размеров этого объекта
BlazkowiczЕсли работает через слушателя, то лучше через него.Ясно. Спасибо.
BlazkowiczJava требует обратной совместимости.Общая идея ясна. Т.е. совместимость не по коду, а по реализации. Т.е. deprecated метод это не тот, который будет удален в следующей версии, а просто тот, который нежелательно вызывать и переопределять нужно именно его?

Не нарвусь ли я на такую ситуацию - в текущей реализации
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
protected int newMethod() {
  return oldMethod();
}

/**
@deprecated
*/
protected int oldMethod {
  ..........
  // Implements
  ....
}


Я переопределю oldMethod, а в новой версии окажется такой код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
protected int newMethod() {
  ..........
  // Implements
  ....
}

/**
@deprecated
*/
protected int oldMethod {
  ..........
  // Implements
  ....
}


Все мое переопределение пойдет в топку и я буду долго искать причину из-за которой все сломалось
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Отловить изменение размеров / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]