A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Rancho_Gump 高级黑马   /  2013-1-17 20:35  /  1342 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-17 20:36 编辑

import java.lang.reflect.Field;
import java.lang.reflect.Type;
public class LeixingZhuanghuan {
public static void main(String[] args) throws Exception{
  // TODO Auto-generated method stub
  A a = new A();
  Field f = A.class.getField("a");

  Type t= f.getGenericType();//获取所要设置的成员变量的类型,可以知道需要设置的变量的类型是int
  System.out.println(t);
  String str = "10";//怎么通过代码实现str的动态转型?
  f.set(a, str);
}
}
class A
{
public int a;//a的类型是无法预料的,需要代码来捕捉
}

怎样利用代码实现将一个已知变量的类型转换成另一个变量的类型?
不知道这个问题实际开发中能否遇到,望大师们不要笑我哈  呵呵

5 个回复

倒序浏览
觉得这个要用if else 或switch来判断吧。
                     Class t = f.getType();
                System.out.println("t="+t);
               
                String str = "10";// 怎么通过代码实现str的动态转型?
                int val=0;
                if(int.class==t)
                        val=Integer.parseInt(str);
                else if(char.class==t){
                        //................
                }
               
                f.set(a, val);

在BeanUtils中,就是可以把字符串变成8种基本数据类型。你可以去参考下源码
回复 使用道具 举报
我看只有写判断了,先取出变量的类型,然后在main类里写判断,是什么基本类型就用什么包装类转换那个String
回复 使用道具 举报
黄锦成 发表于 2013-1-17 21:08
觉得这个要用if else 或switch来判断吧。
                     Class t = f.getType();
                System.out.prin ...

你的判断里用到了int,  int是我用反射得来的结果, 是type结果   另外我想问的也不局限于Str    是不是有点天马行空了  呵呵{:3_54:}
回复 使用道具 举报
张向辉 发表于 2013-1-18 09:54
你的判断里用到了int,  int是我用反射得来的结果, 是type结果   另外我想问的也不局限于Str    是不是 ...

想使用自定义类型的话,可能需要配置了
回复 使用道具 举报
可以用到操作符来进行,is 在你的方法中,利用is 关键字判断其对应类型,在进行转换相应的类型即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马