|
|
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Добрый день ,Уважаемы форумчане. Кто знает как вызвать super.метод прапредка. типа super,super.myfunction() Я бы использовал рефлексию Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но это работает только для public методов....а у меня,блин protected buildtab(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2014, 20:42 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
1. Переделать, чтобы не возникало странного желания; 2. Добавить свои классы или отдельный класс-посредник в чужой пакет, чтобы иметь возможность напрямую вызывать защищённые методы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 04:59 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
3. setAccessible же, но переделать все-таки лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 10:57 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Вызов super.super - это нарушение инкапсуляции же. если так хочется объехать super, то может имеет смысл наследоваться не от него, а от super.super? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 12:09 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Вообще, нормальные языка (C++) такое позволяют. Явно указать класса, из которого нужно вызывать метод. Т.ч. я бы не сказал, что это уж настолько "странное желание". IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 12:31 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВообще, нормальные языка (C++) такое позволяют. Явно указать класса, из которого нужно вызывать метод. Т.ч. я бы не сказал, что это уж настолько "странное желание". IMHO Я бы тоже сказал,что ничего особенного нет.Так получилось,что удобнее всего наследовать от одного класса в котором перекрыт метод.Там 95% нужного решения.Но один метод нужен прапредка.(Я думаю у любого разработчика могут так карты лечь) Не думал,что спустится на 2 этажа ниже будет так сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 13:09 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВообще, нормальные языка (C++) такое позволяют. Явно указать класса, из которого нужно вызывать метод.Проблема не в указании класса, а в правах доступа к методам класса. В тех же плюсах вы запаритесь вызывать приватную функцию, если автор класса не объявил вашу функцию дружественной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 15:11 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Недавно был топик где чел ну ооочень хотел избавиться от private. Ну как-то вот так вобщем. Видать тяжко юзать ООП-парадигмы. Может и не нужны они вовсе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2014, 23:21 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Если ограничивать ООП только наследованием - безусловно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 04:28 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
irbis_alКто знает как вызвать super.метод прапредка. типа super,super.myfunction()Может лучше отрефакторить? Чтобы пропала необходимость дёргать super.super ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 12:42 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
irbis_alНо это работает только для public методов....а у меня,блин protected buildtab(); setAccessible(true); Но, в целом, лучше отрефакторить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 12:47 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Если в этой цепочке superSuper-> super -> thisClass был правильно имплементирован и абстрагирован метод buildtab то не было-бы необходимости драть гланды через задний проход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 12:56 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
maytonЕсли в этой цепочке superSuper-> super -> thisClass был правильно имплементирован и абстрагирован метод buildtab то не было-бы необходимости драть гланды через задний проход. Конечно. Очевидно что LSP нарушен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 12:58 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Blazkowiczirbis_alНо это работает только для public методов....а у меня,блин protected buildtab(); setAccessible(true); Но, в целом, лучше отрефакторить. setAccessible(true) Для полей а не методов...с методами не работает я..проверял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 13:04 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
irbis_alsetAccessible(true) Для полей а не методов...с методами не работает я..проверял. Фу, блин. Запутал ты меня своей рефлексией. Работает и для методов. Просто вызвать его всё равно не выдет, так как метод виртуальный и переопределен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 13:10 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
irbis_al , вобщем рефакторь пока старуха Лисков не побила тебя своим костылём за незнание основ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 13:11 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Blazkowiczirbis_alsetAccessible(true) Для полей а не методов...с методами не работает я..проверял. Фу, блин. Запутал ты меня своей рефлексией. Работает и для методов. Просто вызвать его всё равно не выдет, так как метод виртуальный и переопределен. У меня падает с ошибкой NoSuchMethod...т.е он его не видит.(что есть setAccessible(true) что нет NoSuchMethod.) (возможно потому что java 6) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 13:17 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
В общем случае это делается так. Делаем экземпляр класса предок аналогичный потомку. Запускаем у него нужный метод. Меняем потомок аналогично тому как изменился предок. Долго, дорого неэффективно, зато все при деле. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 18:13 |
|
||
|
super.super.method
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевВ общем случае это делается так. Делаем экземпляр класса предок аналогичный потомку. Запускаем у него нужный метод. Меняем потомок аналогично тому как изменился предок. Долго, дорого неэффективно, зато все при деле. :) Да не ....ну всё просто. в предке сделал buildtab1() { super.buildtab() } а в потомке (текущем классе из-за которого сыр-бор) buildtab() {super.buildtab1()} Я это сразу сделал...просто потом задался мыслью...возможно я чего-то недогоняю и есть метод super,super.mymethod ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 19:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38752922&tid=2126565]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
202ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 532ms |

| 0 / 0 |
