欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

java反射实现的通用toString,java反射tostring

来源: javaer 分享于  点击 11409 次 点评:222

java反射实现的通用toString,java反射tostring


包括基本数据类型的数组都可以使用该方法转String

import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Array;
import java.lang.reflect.Field;

public class GeneralToString {


	public static String toString(Object obj){

		StringBuffer strBuf=new StringBuffer();
		Class cla = obj.getClass();

		/**
		 * 对于基本数据类型和String直接返回
		 */
		if(cla == Integer.class || cla == Short.class || cla == Byte.class || cla == Long.class
				|| cla == Double.class || cla == Float.class || cla == Boolean.class || cla == String.class
				|| cla == Character.class){
			strBuf.append(obj);
			return strBuf.toString();
		}

		/**
		 * 对数组类型的处理
		 */
		if(cla.isArray()){
			strBuf.append("[");
			for(int i = 0;i<Array.getLength(obj);i++){
				if(i>0) strBuf.append(",");
				Object val = Array.get(obj, i);

				if(val!=null&&!val.equals("")){
					strBuf.append(toString(val));
				}
			}
			strBuf.append("]");
			return strBuf.toString();
		}

		//获取所有属性
		Field[] fields=cla.getDeclaredFields();  

		//设置所有属性方法可访问
		AccessibleObject.setAccessible(fields, true);


		strBuf.append("[");  
		for(int i=0;i<fields.length;i++)  
		{  
			Field fd=fields[i];   
			strBuf.append(fd.getName()+"=");  
			try  
			{  
				if(!fd.getType().isPrimitive()&&fd.getType()!=String.class){
					strBuf.append(toString(fd.get(obj)));
				}else{ 
					strBuf.append(fd.get(obj));  
				}
			}  
			catch (Exception e)  
			{   
				e.printStackTrace();  
			}      
			if(i!=fields.length-1)  
				strBuf.append(",");  
		}  

		strBuf.append("]");  
		return strBuf.toString();
	}

}


相关文章

    暂无相关文章

用户点评