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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。