Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работает bridge метод в covariant return type ? / 14 сообщений из 14, страница 1 из 1
15.06.2014, 15:58
    #38669654
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
возник вопрос.

Допустим есть у нас такой вот класс.

Код: java
1.
2.
3.
4.
5.
public class MyComparator implements Comparator<Integer> {
   public int compare(Integer a, Integer b) {
      //
   }
}



говорят, что компилятор добавляет bridge метод и получается следующее:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class MyComparator implements Comparator<Integer> {
   public int compare(Integer a, Integer b) {
      //
   }

   //THIS is a "bridge method"
   public int compare(Object a, Object b) {
      return compare((Integer)a, (Integer)b);
   }
}



говорится, что одна из причин такого это чтобы работало так:

Код: java
1.
2.
3.
4.
5.
Object a = 5;
Object b = 6;

Comparator rawComp = new MyComparator();
int comp = rawComp.compare(a, b);



ну то есть для сырого типа добавляется явный каст.

Это всё была предыстория.

Вопрос мой вот в чем: говорят, что для covariant return type тоже используются bridge методы.

Я что-то не могу придумать аналогию со своим примером для генериков. Проясните, пожалуйста.
...
Рейтинг: 0 / 0
15.06.2014, 16:04
    #38669661
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
redwhite90говорят, что компилятор добавляет bridge метод и получается следующее:
говорится, что одна из причин такого это чтобы работало так:
Ходят слухи по всему офису, а декомпилятора под рукой нет?

redwhite90Вопрос мой вот в чем: говорят, что для covariant return type тоже используются bridge методы.
Я что-то не могу придумать аналогию со своим примером для генериков. Проясните, пожалуйста.
Что-то я вопроса в упор не вижу.
...
Рейтинг: 0 / 0
15.06.2014, 16:09
    #38669666
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
Blazkowicz,

декомпилятора под рукой нет)) Даже IDE сейчас под рукой нет) выдалось несколько часов ожидания просто. Компилирую онлайн компайлером.

Вопрос в том зачем нужен bridge метод для covariant return type.
...
Рейтинг: 0 / 0
15.06.2014, 16:25
    #38669683
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
чтобы соблюсти правила override - инга ?
...
Рейтинг: 0 / 0
15.06.2014, 16:48
    #38669700
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
...
Рейтинг: 0 / 0
15.06.2014, 16:50
    #38669701
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
Blazkowicz,

Собственно по прочтению этой статьи и возник вопрос.
...
Рейтинг: 0 / 0
15.06.2014, 17:15
    #38669719
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
Blazkowicz,

когда начинаются примеры с ассемблерным кодом начинаешь понимать, что ничего непонятно.
...
Рейтинг: 0 / 0
16.06.2014, 10:14
    #38670059
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
redwhite90Собственно по прочтению этой статьи и возник вопрос.
Я первые несколько из гугла пролистал. Эта самая доступная, ИМХО. Вкратце, дело в erasure, генериках и в совместимости байт-кода.
...
Рейтинг: 0 / 0
16.06.2014, 18:29
    #38670846
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
Blazkowicz,

а кстати интересно. Ведь байткод наверное не меняют с каждой версией джавы?
...
Рейтинг: 0 / 0
16.06.2014, 18:47
    #38670862
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
redwhite90а кстати интересно. Ведь байткод наверное не меняют с каждой версией джавы?С каждой.
Чтобы не играть в русскую рулетку времени исполнения на "старых" JVM.
...
Рейтинг: 0 / 0
16.06.2014, 19:38
    #38670903
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
redwhite90а кстати интересно. Ведь байткод наверное не меняют с каждой версией джавы?
меняют, но с обратной совместимостью.
...
Рейтинг: 0 / 0
17.06.2014, 11:13
    #38671428
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
Blazkowicz,

Blazkowicz но с обратной совместимостью.
Если я возьму старые класс файлы, которые были скомпилены java 1.4 они будут у меня работать без перекомпилирования на 1.7 ?
...
Рейтинг: 0 / 0
17.06.2014, 11:15
    #38671433
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
redwhite90Если я возьму старые класс файлы, которые были скомпилены java 1.4 они будут у меня работать без перекомпилирования на 1.7 ?
В подавляющем большинстве случаев - да. Для каждой мажорной версии есть что-то типа migration guide, который подробно описывает несовместимости в новой версии. Их всегда мало. И зачастую они ограничиваются API.
...
Рейтинг: 0 / 0
17.06.2014, 11:16
    #38671436
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает bridge метод в covariant return type ?
Apache Commons всего несколько лет назад перстали поддерживать Java 1.3 совместимость.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работает bridge метод в covariant return type ? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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