论坛首页 Java企业应用论坛

传说中的Java动态注释?

浏览 15775 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-10-18  

动态注释是一个有用的功能。它可以使用多行的字符串来指定在行中测试数据并保存到相对应的记录文件中。

 

但是Java本身并不提供动态注释的功能,我已经在Java中实现了一个简单的多行动态注释的功能,下面看看代码:

/**  
 * @param args
 */
public static void main(String[] args) {
  System.out.println(S(/*
    Wow, we finally have
    multiline strings in
    Java! HOOO!*/)); 
}

 
看看控制台输出的内容吧:

                                 Wow, we finally have
                                 multiline strings in
                                 Java! HOOO!


它是怎么工作的呢?

 

好了,开始解答... 首先,得把源代码文件放到classpath下,然后用下面的代码就可以实现啦:

public static String S() {
  StackTraceElement element = new RuntimeException().getStackTrace()[1];
  String name = element.getClassName().replace('.', '/') + ".java";
  InputStream in = getClassLoader().getResourceAsStream(name);
  String s = convertStreamToString(in, element.getLineNumber());
  return s.substring(s.indexOf("/*")+2, s.indexOf("*/"));
}

 
很显然滴,这个代码没有进行修整和优化,但这仅仅是实现我当前的想法,测试是可以运行的,这就足够了。

或许,它可以加入一些更酷的功能,例如 Groovy、BeanShell 等等。

 

大家有什么想法,一起来参与讨论哟~

   发表时间:2008-10-18  
晕,我还真不知道可以这样!
0 请登录后投票
   发表时间:2008-10-18  
有什么实际用途,和 log 工具的原理有什么不同?
0 请登录后投票
   发表时间:2008-10-18  
我想,以后SQL也可以有理由不用StringBuffer拼接得那么辛苦了

在打印debug日志的时候,往往为了tail得方便,我都会用StringBuffer/Builder把SQL语句拼接得好看一些,后来我是把SQL写到xml中,这样不仅方便vi,也能顺利实现目标。

这种方法可能也能对我以后的项目起到一些积极的作用,晕了,我还真不知道可以这样,哇哈哈,不管怎么说,算是学到了一招,谢谢分享。
0 请登录后投票
   发表时间:2008-10-18  
我只有一个感觉, 搞笑
0 请登录后投票
   发表时间:2008-10-18  
还得把源代码带上?
0 请登录后投票
   发表时间:2008-10-19  
思路有点特别,一般人不会想到可以这样来做.可以作其它方式进行改进.S(结构)看着有点别扭.
0 请登录后投票
   发表时间:2008-10-19  
我倒, 这JAVA玩的, 可真够神的, 真是玩于股掌之间
0 请登录后投票
   发表时间:2008-10-24  
是个挺不错的想法,写程序换换思路挺好
0 请登录后投票
   发表时间:2008-12-06  
恩,挺有新意的,
如果改成用 异常堆栈去找出调用方法的注解还是有一定实际意义的。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics