|
|
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
Суть проблеммы: В классе есть статический метод. Необходимо в нем узнать кто его вызывает и получить к вызвавшему экземпляру класса доступ(если он имнлементит интерфейс, то вызвать его метод). Я могу получить откуда он вызван из Throwable.getStackTrace(), но мне нужен доступ к экземпляру вызвавшего класса. Возможно ли это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:07 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. -- Lacrima Mosa Est ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:12 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
В том-то и дело, что не могу я передать в метод объект: commonMethod(Object whoCallMe) Написаны уже десятки тысячи строк кода, где этот метод вызывается: public static void log(String s) - делает логирование и хотелось бы узнать из какого модуля он вызван. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:26 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 14:47 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
Смотрел. Не помогает. С помощью sun.reflect.Reflection.getCallerClass(count); я могу получить класс, а мне надо экземпляр(объект) вызвавшего класса. Есть еще у кого какие идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:24 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
ИМХО если исходники вызывающего кода тебе недоступны то можно только трассировать стек. Других методов нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 17:37 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
poprobui tak - Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 20:43 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
Исходники вызывающих классов мне доступны. Я не понимаю почему если у меня есть экземпляр класса Class1 obj1, который вызывает у себя метод "aaa(String s)" из Class2, то почему никак нельзя получить доступ в методе "aaa(String s)" к объекту obj1. Единственный путь - передача obj1 в метод aaa не подходит. Кто-нибудь знает выход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 21:16 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
MityaИсходники вызывающих классов мне доступны. Я не понимаю почему если у меня есть экземпляр класса Class1 obj1, который вызывает у себя метод "aaa(String s)" из Class2, то почему никак нельзя получить доступ в методе "aaa(String s)" к объекту obj1. Потому что это жуткие костыли. Их использование - явное свидетельство плохо организованного кода. Ещё раз: "десятки тысячи строк кода, где этот метод вызывается" - это код ты менять не можешь физически, а класс в котором находится статический метод log() - можешь? В такой ситуации ничего не поделать кроме как определить log() деприкейтитом, и добавить метод log(Object caller), что бы в будущем использовали его и по возможности заменяли старый метод новым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2005, 15:29 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
>> Написаны уже десятки тысячи строк кода, где этот метод вызывается: public static void log(String s) - делает логирование и хотелось бы Во народ обленился! Работы-то всего нечего на полчаса - для 10000 строк кода. Делаешь два метода - один депрекайтед, второй обычный /*как ранее советовали, respect /. После этого садишься и правишь код. В чём проблема-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2005, 15:38 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
www.fun4me.narod.ru>> Написаны уже десятки тысячи строк кода, где этот метод вызывается: public static void log(String s) - делает логирование и хотелось бы Во народ обленился! Работы-то всего нечего на полчаса - для 10000 строк кода. Делаешь два метода - один депрекайтед, второй обычный /*как ранее советовали, respect /. После этого садишься и правишь код. В чём проблема-то? Проблема в том, что код который надо править - может быть не доступен для исправления. В противном случае вся задача (using Idea) - это нажать ctrl-f6, указать новую сигнатуру метода, дефолтное значение 'this' и через 3 минуты все вызовы метода заменены на корректные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2005, 15:49 |
|
||
|
Вохможно ли узнать откуда вызван метод?
|
|||
|---|---|---|---|
|
#18+
java script != java www.fun4me.narod.ru>> Написаны уже десятки тысячи строк кода, где этот метод вызывается: public static void log(String s) - делает логирование и хотелось бы Во народ обленился! Работы-то всего нечего на полчаса - для 10000 строк кода. Делаешь два метода - один депрекайтед, второй обычный /*как ранее советовали, respect /. После этого садишься и правишь код. В чём проблема-то? Проблема в том, что код который надо править - может быть не доступен для исправления. В противном случае вся задача (using Idea) - это нажать ctrl-f6, указать новую сигнатуру метода, дефолтное значение 'this' и через 3 минуты все вызовы метода заменены на корректные. Правильно сказано. Заказчик никогда не разрешит мне править код, которому уже несколько лет и он стабильно работает у кастомеров. Единственное, что я могу сделать - менять класс, в котором статический метод log. По поводу создания deprecated и добавления нового метода и последующего использования его, то это можно конечно, но хотелось бы, чтоб работало и со старым. Но как я понял - это не возможно без перелопачивания всего старого кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2005, 13:43 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=820&tid=2153017]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 378ms |

| 0 / 0 |
