调用java显示有何风险_java-转型有风险使用许谨慎

在使用类型转换时,经常会遇到类型转换错误的情况。比如 无法将String转换成int累类型等等,这里将所有的类型转换全部列举出来

保证在转换的适合不会出现错误。

import java.lang.reflect.Field;

import java.math.BigDecimal;

import java.text.DecimalFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import org.apache.commons.lang3.time.DateFormatUtils;

import org.apache.commons.lang3.time.DateUtils;

/**

*

* 功能:类型转换

* 作者:Gary Huang

* 日期: 2014-3-5

* 版权:版权所有(C) 2014,QQ 834865081

*/

@SuppressWarnings("unchecked")

public class TransformUtils {

public static boolean toBoolean(Object obj) {

return toBoolean(obj, false);

}

public static boolean toBoolean(Object obj, boolean defaultValue) {

if (obj == null) {

return defaultValue;

}

try {

return Boolean.parseBoolean(toString(obj));

} catch (Exception e) {

}

return defaultValue ;

}

public static byte toByte(Object obj) {

return toByte(obj, (byte) 0);

}

public static byte toByte(Object obj, byte defaultValue) {

if (obj == null) {

return defaultValue;

}

if (obj instanceof Number) {

Number number = (Number) obj;

return number.byteValue();

}

String value = toString(obj) ;

try {

return Byte.parseByte( value ) ;

} catch (Exception e) {

}

return defaultValue ;

}

public static char toCharacter(Object obj) {

return toCharacter(obj, (char) ' ');

}

public static char toCharacter(Object obj, char defaultValue) {

if (obj == null) {

return defaultValue;

}

String str = obj.toString().trim();

if (str.length() == 0) {

return defaultValue;

}

return (char) str.toCharArray()[0];

}

public static double toDouble(Object obj) {

return toDouble(obj, 0d);

}

public static double toDouble(Object obj, double defaultValue) {

if (obj == null) {

return defaultValue;

}

if (obj instanceof Number) {

Number number = (Number) obj;

return number.doubleValue() ;

}

String value = toString(obj) ;

try {

return Double.parseDouble(value) ;

} catch (Exception e) {

}

return defaultValue ;

}

public static float toFloat(Object obj) {

return toFloat(obj, 0);

}

public static float toFloat(Object obj, float defaultValue) {

if (obj == null) {

return defaultValue;

}

if (obj instanceof Number) {

Number number = (Number) obj;

return number.floatValue();

}

String value = toString(obj) ;

try {

return Float.parseFloat(value) ;

} catch (Exception e) {

}

return defaultValue ;

}

public static int toInt(Object obj) {

return toInt(obj, 0);

}

public static int toInt(Object obj, int defaultValue) {

if (obj == null) {

return defaultValue;

}

if (obj instanceof Number) {

Number number = (Number) obj;

return number.intValue();

}

String value = toString(obj) ;

try {

return Integer.parseInt(value) ;

} catch (Exception e) {

}

return defaultValue ;

}

public static long toLong(Object obj) {

return toLong(obj, 0L);

}

public static long toLong(Object obj, long defaultValue) {

if (obj == null) {

return defaultValue;

}

if (obj instanceof Number) {

Number number = (Number) obj;

return number.longValue();

}

String value = toString(obj) ;

try {

return Long.parseLong(value) ;

} catch (Exception e) {

}

return defaultValue ;

}

public static short toShort(Object obj) {

return toShort(obj, (byte) 0);

}

public static short toShort(Object obj, short defaultValue) {

if (obj == null) {

return defaultValue;

}

if (obj instanceof Number) {

Number number = (Number) obj;

return number.shortValue();

}

String value = toString(obj) ;

try {

return Short.parseShort(value) ;

} catch (Exception e) {

return defaultValue;

}

}

public static String toString(Object value) {

if (value == null) {

return "";

}

return value.toString().trim();

}

public static BigDecimal toBigDecimal(Object value){

return toBigDecimal(value , new BigDecimal(0)) ;

}

public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) {

if(value == null){

return defaultValue ;

}

if(value instanceof BigDecimal){

BigDecimal decimal = (BigDecimal) value ;

return decimal;

}

return new BigDecimal( toDouble( value ) );

}

public static String dateToString(Object value, String pattern){

java.util.Date date = (java.util.Date) value;

Calendar calendar = Calendar.getInstance();

calendar.setTime( date ) ;

SimpleDateFormat sdf = new SimpleDateFormat( pattern );

return sdf.format( date ) ;

}

public static Object transform(Object obj,Class> clazz){

if(clazz == null){

return obj ;

}

if(clazz.isEnum()){

Field[]fields=clazz.getFields() ;

int tempInt = toInt(obj) ;

if(fields.length > tempInt){

try {

return Enum.valueOf((Class)clazz , fields[tempInt].getName());

} catch (Exception e) {

}

}

}

if(obj.getClass().equals(clazz)){

return obj ;

}

if(int.class.equals(clazz) || Integer.class.equals(clazz)){

return toInt(obj) ;

}else if( String.class.equals(clazz) ){

return toString( obj ) ;

}else if(float.class.equals(clazz) || Float.class.equals(clazz)){

return toFloat(obj) ;

}else if(double.class.equals(clazz) || Double.class.equals(clazz)){

return toDouble(obj) ;

}else if(byte.class.equals(clazz) || Byte.class.equals(clazz)){

return toByte(obj) ;

}else if(char.class.equals(clazz) || Character.class.equals(clazz)){

return toCharacter(obj) ;

}else if(short.class.equals(clazz) || Short.class.equals(clazz)){

return toShort(obj) ;

}else if(long.class.equals(clazz) || Long.class.equals(clazz)){

return toLong(obj) ;

}else if(boolean.class.equals(clazz) || Boolean.class.equals(clazz)){

return toBoolean(obj) ;

}else if(BigDecimal.class.equals(clazz)){

return toBigDecimal( obj ) ;

}else if(java.util.Date.class.equals(clazz) ||

java.sql.Date.class.equals(clazz)

|| java.sql.Timestamp.class.equals(clazz)){

try {

java.util.Date date = DateUtils.parseDate(obj.toString()

, "yyyyMMdd" , "yyyy-MM-dd" ,

"yyyy年MM月dd日" ,

"yyyyMMddHHmmss" ,

"yyyy-MM-dd HH:mm:ss" ,

"yyyy年MM月dd日HH时mm分ss秒" ) ;

if(java.sql.Date.class.equals(clazz)){

return new java.sql.Date(date.getTime()) ;

}else if(java.sql.Timestamp.class.equals(clazz)){

return new java.sql.Timestamp(date.getTime()) ;

}

return date ;

} catch (Exception e) {

return null;

}

}

return obj ;

}

public static String objToString( Object value ){

if(Helper.isNull( value )){

return "" ;

}

if(value instanceof BigDecimal || value instanceof Double ||

value instanceof Float){

BigDecimal decimal = toBigDecimal( value ) ;

DecimalFormat df = new DecimalFormat("0.00");

return df.format( decimal ) ;

}else if(value instanceof Date){

Date date = (Date) value ;

Calendar calendar = Calendar.getInstance() ;

calendar.setTime( date ) ;

String pattern = "yyyy-MM-dd HH:mm:ss" ;

if(calendar.get(Calendar.HOUR_OF_DAY) == 0

&& calendar.get(Calendar.MINUTE) == 0

&& calendar.get(Calendar.SECOND) == 0){

pattern = "yyyy-MM-dd" ;

}

return DateFormatUtils.format(calendar, pattern) ;

}

return value.toString() ;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值