`
yipsilon
  • 浏览: 242239 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

传说中的Java动态注释?

阅读更多

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

 

但是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 等等。

 

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

分享到:
评论
34 楼 快乐柠檬 2009-10-16  
我只是想回帖
33 楼 solonote 2009-09-28  
这个看起来像GWT的native方法。。。
32 楼 yipsilon 2009-09-28  
WenBin_Zhou 写道
很有创意 一般人不会去注意异常站

如果是我 我会利用反射 获取类信息 再用io流夺取所需的注释信息

不明白lz  的方法 convertStreamToString()是怎么一回事 请赐教!


都好久啦,代码找不到了。

convertStreamToString(InputStream in, int lineNumber)

就是自动判断数据流字符编码,然后从第lineNumber行读取到代码结束。
31 楼 WenBin_Zhou 2009-09-28  
很有创意 一般人不会去注意异常站

如果是我 我会利用反射 获取类信息 再用io流夺取所需的注释信息

不明白lz  的方法 convertStreamToString()是怎么一回事 请赐教!

30 楼 hoorace 2009-03-02  
逐渐明白了思想的差距,不能不学习一下楼主的创意。
29 楼 徐风子 2009-03-02  
java做多了,越来越感觉还是groovy好呀。
28 楼 jamesqiu 2009-02-20  
我觉得还不如这样: 使用配置文件如纯文本或groovy文件来定义多行的字符串, 在java类中解析读入就可以了
27 楼 aninfeel 2009-02-19  
感觉只是很有意思而已。
26 楼 yellu 2009-02-19  
log4j获取打log的类名就是这种方式
25 楼 drinkjava 2009-02-18  
想了好久,好想也只有这个实际用处:
在java源码中是不支持多行字符串的, 必须用+号连起来
如"abcd\r\n"+"efgh"\r\n"+"ijkl",很麻烦,用这个方法就可以写成
/*abcd
efgh
ijkl*/
可以省点事,特别是从别的地方拷来大段的文本片段时,可以不做处理直接贴到代码中。
24 楼 wenrousun 2009-02-16  
我没看懂....lz说的把源码放到classpath下,是什么意思呢?
23 楼 wunan320 2009-02-16  
没有回帖的习惯。见了lz的文章实在忍不住了,这是技术版还是搞笑版。
22 楼 linliangyi2007 2009-02-15  
把java源文件当作txt一样读入,然后做字符截取或者替换,再输出。。。
我认真的看了,但没有明白是啥意思
21 楼 sonsyboy 2009-02-15  
嗯,学习一下改变思路!
20 楼 yingfang05 2009-02-15  
这样玩还真是够强啊,不过个人感觉意义不是很大
19 楼 liufeng820 2009-02-13  
实在是乐的前仰后合.楼主你太搞笑了...
18 楼 jltest 2009-02-13  
太有才了。。。。
17 楼 wdlfellow 2009-02-13  
另一种思路吧,赞一个,虽然用处不是很大!
16 楼 sdh5724 2009-02-13  
还是直接用PHP写代码吧, 用什么JAVA啊
15 楼 mewleo 2009-02-12  
你动了,注释没动啊!

相关推荐

Global site tag (gtag.js) - Google Analytics