andriod 获取当前函数名
2016-09-02 10:27
351 查看
缘由
开发输出Log时经常会打印当前函数,于是就在网上查找相应的方法, 自己也总结了下:
开发输出Log时经常会打印当前函数,于是就在网上查找相应的方法, 自己也总结了下:
直接上代码:
public class Utils { private static final int STACK_TRACE_INDEX = 3; private static final String SUFFIX = ".java"; public static String getHeadSuffix() { try{ //获取调用的函数堆栈信息 StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); StackTraceElement targetElement = stackTrace[STACK_TRACE_INDEX]; //获取类名 String className = targetElement.getClassName(); String[] classNameInfo = className.split("\\."); if (classNameInfo.length > 0) { className = classNameInfo[classNameInfo.length - 1] + SUFFIX; } //获取内部类 if (className.contains("$")) { className = className.split("\\$")[0] + SUFFIX; } //获取当前方法名 String methodName = targetElement.getMethodName(); //获取当前行号 int lineNumber = targetElement.getLineNumber(); if (lineNumber < 0) { lineNumber = 0; } //输出信息 StringBuffer sb = new StringBuffer(); sb.append(methodName.substring(0, 1).toUpperCase()); sb.append(methodName.substring(1)); String methodNameShort = sb.toString(); StringBuffer sb1 = new StringBuffer(); sb1.append("[ ("); sb1.append(className); sb1.append(":"); sb1.append(lineNumber); sb1.append(")#"); sb1.append(methodNameShort); sb1.append(" ] "); return sb1.toString(); }catch (Exception e){ return "[]"; } } }
详细介绍:
Thread.currentThread().getStackTrace()返回的是一个StackTraceElement数组,内容为调用函数堆栈,并且以调用层级关系保存。
STACK_TRACE_INDEX = 3是因为Android是下标为3获取方法名, 纯Java是下标为2获取方法名。
相关文章推荐
- 今天晚上写了个获取当前Office版本的函数(原创!)
- C中获取当前时间的函数
- 获取当前时间的函数
- PHP 获取当前url的函数及参数
- PHP获取当前url路径的函数及服务器变量:$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"],$_SERVER["PHP_SELF"]
- 获取当前程序运行路径的函数
- 获得系统特殊路径函数SHGetSpecialFolderLocation()获取当前用户桌面
- 写了个函数,获取当前登录系统的用户名
- PHP获取当前url的函数
- php中获取当前系统时间的函数
- 如何获取指定内存所在的模块、当前模块、当前函数的返回模块
- 获取当前线程,线程id,设置优先级等函数接口
- PHP获取当前url的函数及服务器变量
- 用系统函数获取当前季度
- MDX函数妙用-获取当前相关日期
- 今天晚上写了个获取当前Office版本的函数(原创!)
- excel中获取l当前工作表的名字的函数
- 获取当前Url地址以及参数的函数
- 写了个函数,获取当前登录系统的用户名
- 用C#获取当前函数名,当前代码行,源代码文件