栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 反射将字符串转换为对应的类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 反射将字符串转换为对应的类型

做反射的时候可能会有这种需求: 给定一个字符串和一个类型,将字符串转换为指定的类型

public class TypeUtils {

    public static Object stringToNullableTarget(String string, Class t) throws Exception {
        return string == null ? null : t.getConstructor(String.class).newInstance(string);
    }


    public static Object stringToTarget(String string, Class t) throws Exception {
        boolean nullOrEmpty = StringUtils.isEmpty(string);

        if (double.class.equals(t)) {
            return nullOrEmpty ? 0 : Double.parseDouble(string);
        } else if (long.class.equals(t)) {
            return nullOrEmpty ? 0 : Long.parseLong(string);
        } else if (int.class.equals(t)) {
            return nullOrEmpty ? 0 : Integer.parseInt(string);
        } else if (float.class.equals(t)) {
            return nullOrEmpty ? 0 : Float.parseFloat(string);
        } else if (short.class.equals(t)) {
            return nullOrEmpty ? 0 : Short.parseShort(string);
        } else if (boolean.class.equals(t)) {
            return nullOrEmpty ? 0 : Boolean.parseBoolean(string);
        }  else if (Number.class.isAssignableFrom(t)) {
            return t.getConstructor(String.class).newInstance(nullOrEmpty?"0":string);
        }    else {
            return nullOrEmpty ? "" : t.getConstructor(String.class).newInstance(string);
        }

    } 

}

使用方法
    public static void main(String[] args) throws Exception {
        System.out.println(TypeUtils.stringToTarget("0.00", BigDecimal.class));
        System.out.println(TypeUtils.stringToTarget("0", int.class));
        System.out.println(TypeUtils.stringToTarget("0.00", Float.class));
        System.out.println(TypeUtils.stringToTarget("99999999999999999", BigInteger.class));
    }

输出

0.00
0
0.0
99999999999999999
class Test{
    public static void main(String[] args) throws Exception {
        System.out.println(TypeUtils.stringToTarget("张三", MyType.class));
    }
}

class MyType{
	String str;
	public MyType(String str){
		this.str = str;
	}

	@Override
	public String toString(){
		return str + "hello world!";
	}
}

输出

张三hello world!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号