iteye_3782 2009-04-23 11:22
浏览 215
已采纳

java反射

谁帮写一段代码
功能
给定包名类名后
可以查出这个类中有什么属性,属性类型
有什么方法,方法的参数,参数个数
我知道用反射机制,麻烦帮写一下
注释一下
[b]问题补充:[/b]
获得方法参数的名称是用什么方法?
[b]问题补充:[/b]
我想获得完整的方法
比润 public String print(String s)

  • 写回答

10条回答 默认 最新

  • wei_jing 2009-04-26 00:10
    关注

    [code="java"]
    package utils;

    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;

    public class ReflectTest {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
    
        Class clazz = Class.forName("utils.FileUtils");
        Field[] fields = clazz.getDeclaredFields();
        Method[] methods = clazz.getDeclaredMethods();
        System.out.println("--------------- 属性如下  -----------------");
        for(Field field : fields){
            int mod = field.getModifiers();
            System.out.println(Modifier.toString(mod) //取得修饰符
                    + " " + field.getType().getName() //取得类型名
                    + " " + field.getName());         //取得属性名
        }
        System.out.println("--------------- 方法如下  -----------------");
        for(Method method : methods){
            StringBuffer methodBuffer = new StringBuffer();
            int mod = method.getModifiers();
            methodBuffer.append(Modifier.toString(mod))  //取得修饰符
                        .append(" ").append(method.getReturnType().getName()) //取得返回值类型
                        .append(" ").append(method.getName())  //取得方法名
                        .append("(");
            for(Class ss : method.getParameterTypes()){
                methodBuffer.append(ss.getName()).append(",");  //取得参数
            }
            methodBuffer.deleteCharAt(methodBuffer.lastIndexOf(",")); //去掉最后一个","
            methodBuffer.append(")");
            System.out.println(methodBuffer.toString());  //打印输出
        }
    
    }
    

    }

    [/code]

    [quote]我想获得完整的方法
    比润 public String print(String s)[/quote]

    据我所知,是不能通过反射获得方法的具体参数,如上面的s,因为Java的Class文件根本就不会存储一个方法的参数名。不过你的这个要求可以通过一些第三方类库来完成,比如:ParaNamer(具体内容参考它的官方网站http://paranamer.codehaus.org/)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?