public static String getRecourceOfCurrentUser(String resName, String operateKey)。
我想获取“resName”和“operateKey”,请教各位大虾有没有什么方法?

解决方案 »

  1.   

    不能吧,你可以研究下java的反射机制!呵呵
      

  2.   

    这个有什么用吗?还是说想脑筋体操一把?--------
    With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is
    hard to be sure where they are going to land, and it could be dangerous sitting under them as they
    fly overhead.
      

  3.   

    aop。如果你感兴趣我可以写代码。。
      

  4.   

    我跟你打赌 AOP 解决不了这个问题 :)这个问题理论上是有解的,但前提是编译时保留了调试信息,否则神仙也没辙。--------
    With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is
    hard to be sure where they are going to land, and it could be dangerous sitting under them as they
    fly overhead.
      

  5.   

    关键是不知道,他要实现什么样的功能,我觉得用aop可以解决。
    aop就是代理耶: 当然分为:编译时增强和运行时增强(cglib或jdk 动态代理)
      

  6.   

    而且他的这个貌似是方法上的增强,用spring的aop就够了,不用apsctj了。
      

  7.   

    获取“参数名”,似乎不是为了“增强”,倒像是某种辅助编程工具……算了,不猜了,还是等楼主自己揭晓吧。
    ■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  8.   


    确实是这样,不过,你要获得干嘛?
    你方法写好了,公布个API,那时参数名已经写好在代码里面,那么还要再获得???
      

  9.   

    呵呵,这领导??? 请问你拉倒参数名能知道往方法里传什么东西???参数名只要符合java命名规范相怎么写就怎么写,和类型、内容一点关系都没有,想不明白你要他做什么????? 除非你们老板规定参数就必须是这个名字????? 
      

  10.   

    这个事情要靠文档啊,怎么想到反射去了?!--------
    With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is
    hard to be sure where they are going to land, and it could be dangerous sitting under them as they
    fly overhead.
      

  11.   


    ………………
    我彻底无语,公布API就好了,API就是给别人看的文档,给别人去调用
      

  12.   


    我当时也有想获取文档的信息,但也不知道怎样去获取,请教这位仁兄有什么方法去获取得到?
    如,获取resName 资源名称和operateKey 操作类型:/**
     * 根据资源名和操作类型来获取资源ID
     * @author CaiJiuFa
     * @param resName 资源名称
     * @param operateKey 操作类型
     * @return 资源ID列表
     */
    public static String getRecourceOfCurrentUser(String resName, String operateKey) {}
      

  13.   

    LZ啊,你自己去写个TEST类去,然后写好注释,去生成API看看什么效果,就不用再问我们了
      

  14.   

    我要做的是在应用系统中显示该方法的信息,而不是生成API。
      

  15.   

    自己写个doclet抽取javadoc comments插入的应用系统中。
      

  16.   

    看了半天,没搞清楚人物关系 :(可否请楼主澄清下面几个问题:1. getRecourceOfCurrentUser() 程序的提供者是谁?2. getRecourceOfCurrentUser() 的使用者是谁?他有机会看到源代码吗?3. 你的任务是什么?(感觉是要做一个编程辅助工具……)■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  17.   

    反射是取不到的,如果在编译时使用默认选项的话,或者 javac 带有 -g:vars 编译参数的话,局部变量及方法形式参数名会在字节码中保存着,但是 Java 代码是访问不到的。如果需要抽取字节码中的形式参数名称需要自己去了解 JVM 字节码规范自己去解析!
      

  18.   

    javap -v Test        Test 是类名。从第 4 行 Constant Pool: 开始会输出字节码常数池中的数据,里面就有方法名、方法签名,以及形式参数名。
      

  19.   

    不好意思,我只是个初学者,只是拿来做做,大家见笑了import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;public class getRecourceOfCurrentUser {
    public static void main(String[] args) throws Exception {
    reflect rl = new reflect();
    Class cla = reflectT.class; 
    Field[] field = cla.getDeclaredFields();
    Method[] methods = cla.getDeclaredMethods();
    for (Method method : methods) {
    if (method.getName() == "reflect1") {
    System.out.println(method.getName());
    for (Field field2 : field) {
    System.out.print(field2.getType() + " " + field2.getName()
    + " " + "\n");
    } }
    } }}class reflect { public static String reflect1(String resName, String operatekey) {
    return operatekey; }}
      

  20.   

    这个我给写错了!我改了一下!!!!!!!!!!!!!import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;public class getRecourceOfCurrentUser { public static void main(String[] args) throws Exception {
    Class cla = reflectT.class;
    Field[] field = cla.getDeclaredFields();
    Method[] methods = cla.getDeclaredMethods();
    for (Method method : methods) {
    if (method.getName() == "reflect1") {
    System.out.println(method.getName());
    for (Field field2 : field) {
    System.out.print(field2.getType() + " " + field2.getName()
    + " " + "\n");
    } }
    } }}class reflectT { private String resName;
    private String operatekey; public String getResName() {
    return resName;
    } public void setResName(String resName) {
    this.resName = resName;
    } public String getOperatekey() {
    return operatekey;
    } public void setOperatekey(String operatekey) {
    this.operatekey = operatekey;
    } public static String reflect1(String resName, String operatekey) {
    return operatekey; }}
      

  21.   


    这应该要看模块开发者写的API文档,光从变量名里看是不现实的变量名不见得能体现参数的意义,比如有的人把参数名写成 arg1, arg2, arg3 这类形式领导提个建议罢了,如果强制你这样做,那就是瞎指挥。
      

  22.   

    LZ 的问题我也遇到了,不过我是写自己的开源框架中。有一套Bean定义模型中有这个参数的要求,JDK本身就别指望有这个功能的支持了。我这里有2种办法供你选择
    1.使用javassist.jar 这个项目可以帮助你解决这个问题,它是一个增强的反射工具。
    项目地址http://www.csg.is.titech.ac.jp/~chiba/javassist/
    使用例子http://www.blogjava.net/Hafeyang/archive/2010/10/25/using_powerful_java_reflect_tool_javassist_to_getParameterAnnotations_and_getParameterNames.html
    但是这个工具的运行效率没有ASM高。你也可以使用ASM来扫描Class文件这样获取你要的属性名,前提是你需要对 Class字节码有比较深入的了解。我更趋向于使用后者,但是ASM的API没有javassist方便。