java 获取实参的名字

唐海康 发布于 2013/04/18 11:15
阅读 393
收藏 0

我想做一个视图渲染的类,里面有一个render方法,希望实现这个功能,如:

String bc = "accc";
render(bc);
然后在视图中可以这么实用:

<p>$bc</p>   //这里会被渲染成内容是accc的段落
这样的话需要获取实参的名字才可以实现,其实我在play framework 1.x里面是可以这么做的,Play的实现好像修改了ClassLoader,我没那个本事去修改所以做不了,而且修改了ClassLoader的话还有很多问题,所以这个方法是行不通的了,现在求解有没有别的方法,渲染引擎是velocity

加载中
0
逝水fox
逝水fox
为什么不 reader("bc", bc) 呢
唐海康
唐海康
当然是可以的啊,只是感觉像Play的那种方式比较自然和比较好而已
0
子木007
子木007

反射应该是可以的,前提是 javac 的时候加参数,这样才能把名字保留下来,否则编译过后真实的名字已经不存在了

spring 中有个  ParameterNameDiscoverer   

0
逝水fox
逝水fox
无法从反射的角度来解决这个问题。如果不想像Play!那样实时重新编译class的话,要实现,只能拦截这个方法的调用栈,获取调用函数所在类之后,分析class文件结构拿到本地变量表里面的局部变量名,但如楼上所言,本地变量表需要在debug模式下编译(至少需要-g:vars开启的情况下)才会添加到class文件中。本地变量表没有编程上的反射相关类支持
返回顶部
顶部