扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Java是否提供某种方法:可以让用户代码在编译时确定源码行号等信息,本人暂时不知晓。不过从网上搜索得到的方法大致是:
柘荣网站建设公司创新互联建站,柘荣网站设计制作,有大型网站制作公司丰富经验。已为柘荣上千余家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的柘荣做网站的公司定做!
Thread.currentThread().getStackTrace()[1].getFileName():获取当前文件名;
Thread.currentThread().getStackTrace()[1].getLineNumber():获取当前行号。
其中:Thread.currentThread().getStackTrace()返回的是一个数组形式的函数调用栈(栈顶在索引0处),其中第1个元素(索引为0)为最新调用的函数信息(getStackTrace()),第2个元素(索引为1)为当前函数(即调用getStackTrace()的函数)信息。
在StackTraceElement类中有个getLineNumber()方法可以获取行号。
在Thread类中有个getStackTrace()方法可以获取StackTraceElement数组。下标从小到大依次为方法栈从顶到底。所以说通过 Thread.currentThread().getStackTrace()[1].getLineNumber()即可得到.
当然,通过构造一个Throwable(或其子类)对象也可以得到行号。
至于为什么有行号:字节码中有个LineNumberTable属性,将字节码偏移地址与java行对应起来,所以可以找到。
行号可以根据换行计算,每换一行,则行号增加,行尾都有一个\n
so:
读取文件所有内容,
判断\n的个数,即可得到行数(\n个数+1)
注:计算\n个数可以用\n来分割字符串,得到数组,数组的length即为行号
这个没什么意义吧,你想要知道具体运行到那些地方的话可以打断点一步一步运行啊
如果你用的是Eclipse或MyEclipse,在代码的左边(就是有加号或减号,用于缩放代码的位置)点右键将Show Line Numbers打上对勾就可以看见行号了,文件名看包。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流