java各种数据类型的转换

问题:查询数据返回了一个object类型的字段,该字段有可能是String、BigDecimal、double和int,我要做的是对这个字段进行统一处理,如与特定值比较。

解决方案:将不同的类型都转化成为一种类型如double,再进行比较。

分析:虽然进行转换需要考虑的层面较多,但写完后可复用到多种业务场景之中。

场景:取到obj,与一个double值如value进行比较,若大于此double值,输出bigger than value。

方案代码:

package aaa;

import java.math.BigDecimal;

public class User {

	public static void main(String[] args) {
		Object obj = new BigDecimal("3.0");//getFromOther();//从业务场景获取object
		double value = 2.5;//定义比较值value
		try {
			double dobj = convertDataFormat(obj);
			System.out.println(dobj);
			if(dobj > value) {
				System.out.println("bigger than value");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static double convertDataFormat(Object obj) throws Exception {
		double result;
		if(obj instanceof String) {
			try {
				result = Double.valueOf((String)obj);//转化失败则抛出RuntimeException异常,需处理
			} catch(Exception e) {
				throw new Exception("字符串不能转化为double");
			}
		} else if(obj instanceof BigDecimal) {
			result = ((BigDecimal)obj).doubleValue();//可能会丢失精度
		} else if(obj instanceof Integer){
			result = Double.valueOf((Integer)obj);
		} else {
			try {
				result = (double)obj;//需处理类型转换失败的异常情况
			} catch(Exception e) {
				throw new Exception("类型转换失败");
			}
		}
		return result;	
	}
}

这样做将转换方法抽取出来,方便复用,同时满足了业务场景,实现了类型转换。
 

 

你可能感兴趣的:(java各种数据类型的转换)