Java学习-025-类名或方法名应用之一 -- 调试源码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java学习-025-类名或方法名应用之一 -- 调试源码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3449字,纯文字阅读大概需要5分钟。
内容图文
上文讲述了如何获取类名和方法名,敬请参阅: Java学习-024-获取当前类名或方法名二三文 。
通常在应用开发中,调试或查看是哪个文件中的方法调用了当前文件的此方法,因而在实际的应用中需要获取相应的包名、类名、方法名、行数,从而快速定位,及统计方法被调用的次数,生成类方法关系链。
相信爱钻研的小主们,通过上篇文章,已经懂得了,如何获取主调方法、从调方法。那我直接上码了,敬请各位小主参阅,若有不足之处,敬请各位大神指正,不胜感激!
GetClassMethodName.java 源码内容如下所示:
/** * Aaron.ffp Inc. * Copyright (c) 2004-2015 All Rights Reserved. */ package com.java.demo; import org.testng.annotations.Test; /** * Get information of class and method * * @author Aaron.ffp * @version V1.0.0: Jsoup com.java.demo GetClassMethodName.java, 2015-8-13 10:58:39 Exp $ */ public class GetClassMethodName extends InvokeClass{ /** * Debug code demo use Exception * * @author Aaron.ffp * @version V1.0.0: Jsoup com.java.demo GetClassMethodName.java test_invokeMethod_001, 2015-8-14 12:50:32 Exp $ * */ @Test public void test_invokeMethod_001(){ System.out.println(" ====== Main Invoke Method : GetClassMethodName.test_invokeMethod_001() =========================== "); this.invokeMethod_001(); } /** * Debug code demo use Thread * * @author Aaron.ffp * @version V1.0.0: Jsoup com.java.demo GetClassMethodName.java test_invokeMethod_002, 2015-8-14 12:51:33 Exp $ * */ @Test public void test_invokeMethod_002(){ System.out.println(" ====== Main Invoke Method : GetClassMethodName.test_invokeMethod_002() =========================== "); this.invokeMethod_002(); } }
InvokeClass.java 源码内容如下所示:
/** * Aaron.ffp Inc. * Copyright (c) 2004-2015 All Rights Reserved. */ package com.java.demo; import com.demo.HelperReporter; /** * Invoked class * * @author Aaron.ffp * @version V1.0.0: Jsoup com.java.demo InvokeClass.java, 2015-8-14 01:15:12 Exp $ */ public class InvokeClass extends HelperReporter{ /** * By Exception * * @author Aaron.ffp * @version V1.0.0: Jsoup com.java.demo InvokeClass.java invokeMethod_001, 2015-8-14 01:15:51 Exp $ * */ public void invokeMethod_001(){ StackTraceElement[] ste = new Exception().getStackTrace(); System.out.println(" ====== Invoked Method : InvokeClass.invokeMethod_001() =========================== "); for (int i = 0; i < ste.length; i++) { if (i > 1) { break; } System.out.println("ste[" + i + "].getClassName()" + "\t" + ste[i].getClassName() + "\n" + "ste[" + i + "].getFileName()" + "\t" + ste[i].getFileName() + "\n" + "ste[" + i + "].getMethodName()" + "\t" + ste[i].getMethodName() + "\n" + "ste[" + i + "].getLineNumber()" + "\t" + ste[i].getLineNumber() + "\n" ); } } /** * By Thread * * @author Aaron.ffp * @version V1.0.0: Jsoup com.java.demo InvokeClass.java invokeMethod_002, 2015-8-14 01:16:19 Exp $ * */ public void invokeMethod_002(){ StackTraceElement[] ste = Thread.currentThread().getStackTrace(); System.out.println(" ====== Invoked Method : InvokeClass.invokeMethod_002() =========================== "); for (int i = 0; i < ste.length; i++) { if (i < 1 || i > 2) { continue; } System.out.println("ste[" + i + "].getClassName()" + "\t" + ste[i].getClassName() + "\n" + "ste[" + i + "].getFileName()" + "\t" + ste[i].getFileName() + "\n" + "ste[" + i + "].getMethodName()" + "\t" + ste[i].getMethodName() + "\n" + "ste[" + i + "].getLineNumber()" + "\t" + ste[i].getLineNumber() + "\n" ); } } }
源码运行结果如下所示:
在实际应用中,各位小主参照此方法进行相应的变更即可,也可将此相关信息封装成方法,定制适合测试框架等的输出,注意通过 Exception 或 Thread 获取相关信息时的不同(此部分后续会做一些简单的示例,给各位小主参阅,敬请期待)!
至此, Java学习-025-类名或方法名应用之一 -- 调试源码 顺利完结,希望此文能够给初学 Java 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
原文:http://www.cnblogs.com/fengpingfan/p/4728858.html
内容总结
以上是互联网集市为您收集整理的Java学习-025-类名或方法名应用之一 -- 调试源码全部内容,希望文章能够帮你解决Java学习-025-类名或方法名应用之一 -- 调试源码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。