cnsd007 2010-08-18 16:03
浏览 236
已采纳

关于java 反射问题

[code="java"]public static Customer setCustomerObject(String[] str)
throws IllegalArgumentException, SecurityException,
InstantiationException, IllegalAccessException,
InvocationTargetException, NoSuchMethodException {

    Class<?> classType = new Customer().getClass();
    Field fields[] = classType.getDeclaredFields();
    Object objectCopy = classType.getConstructor(new Class[] {})
            .newInstance(new Object[] {});
    for (int i = 0; i < fields.length; i++) {
        Field field = fields[i];

        String fieldName = field.getName();
        String firstLetter = fieldName.substring(0, 1).toUpperCase();

        // 获得和属性对应的setXXX()方法的名字
        String setMethodName = "set" + firstLetter + fieldName.substring(1);

        // 获得和属性对应的getXXX()方法

        // 获得和属性对应的setXXX()方法
        Method setMethod = classType.getMethod(setMethodName,
                new Class[] { field.getType() });
        // 获得 set方法参数的类型
        Class pvec = setMethod.getParameterTypes()[0];//

color=red]这里得到了 类型,是否可以根据这个类型 将 str[i] 转换为 该类型? 将一个泛类型向下转化为具体的类型,然后调用 这个类型的方法
将str[i] 转化 比如 Long.ValueOf(str[i])[/color]

System.out.println(pvec);
setMethod.invoke(objectCopy, str[i]);
}
return (Customer) objectCopy;
}[/code]

  • 写回答

4条回答 默认 最新

  • 「已注销」 2010-08-18 16:34
    关注

    不用转换,我使用Method.invoke(obj,new Object[]{arg1,args2})都是这么直接用。反射机制帮你搞定,咱们不容那么麻烦!

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

报告相同问题?

悬赏问题

  • ¥30 Windows Server 2016利用兩張網卡處理兩個不同網絡
  • ¥15 Python中knn问题
  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源