黑马程序员技术交流社区

标题: 变量类型转换问题 [打印本页]

作者: Rancho_Gump    时间: 2013-1-17 20:35
标题: 变量类型转换问题
本帖最后由 张向辉 于 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的类型是无法预料的,需要代码来捕捉
}

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

作者: 黄锦成    时间: 2013-1-17 21:08
觉得这个要用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种基本数据类型。你可以去参考下源码
作者: 谢毅    时间: 2013-1-17 21:31
我看只有写判断了,先取出变量的类型,然后在main类里写判断,是什么基本类型就用什么包装类转换那个String
作者: Rancho_Gump    时间: 2013-1-18 09:54
黄锦成 发表于 2013-1-17 21:08
觉得这个要用if else 或switch来判断吧。
                     Class t = f.getType();
                System.out.prin ...

你的判断里用到了int,  int是我用反射得来的结果, 是type结果   另外我想问的也不局限于Str    是不是有点天马行空了  呵呵{:3_54:}
作者: 黄锦成    时间: 2013-1-19 16:13
张向辉 发表于 2013-1-18 09:54
你的判断里用到了int,  int是我用反射得来的结果, 是type结果   另外我想问的也不局限于Str    是不是 ...

想使用自定义类型的话,可能需要配置了
作者: 高浩    时间: 2013-1-19 16:47
可以用到操作符来进行,is 在你的方法中,利用is 关键字判断其对应类型,在进行转换相应的类型即可




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2