Я пытаюсь получить класс вызывающего и имя метода внутри функции в приложении Scala. В настоящее время я использую трассировку стека, но производительность уменьшилась. Я делаю что-то вродеПолучить класс и метод вызова
stackTrace(CodeDepth).getClassName
stackTrace(CodeDepth).getMethodName
Я нашел отражение Java, чтобы быть намного более быстрым, но я могу получить только имя класса с
sun.reflect.Reflection.getCallerClass(CodeDepth).getName()
Есть ли способ, чтобы получить имя методы (и, необязательно, номер строки) через отражение? Может быть, используя отражение Скалы?
Благодаря
Я думаю, что это то, что вы ищете: http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html – nafas
Возможный дубликат метода [Get callers (java.lang .reflect.Method)] (http://stackoverflow.com/questions/4024587/get-callers-method-java-lang-reflect-method) –
@nafas Нет, использование Throwable также дорого. См. Http://stackoverflow.com/questions/421280/how-do-i-find-the-caller-of-a-method-using-stacktrace-or-reflection для справки. – sebi