import java.lang.reflect.Field;

public class ToStringer {

	public static String toString(Object instance) {

		StringBuffer sb = new StringBuffer();

		Class clazz = instance.getClass();

		sb.append(clazz.getName());

		//privateメソッド、フィールドの取得にはgetDeclared...
		//を使います。
		Field[] fields = clazz.getDeclaredFields();

		for(int i=0; i<fields.length;i++){
			Field field = fields[i];

			//privateフィールドの取得には、accessibleフラグを
			//trueにする必要があります。
			field.setAccessible(true);

			String name = field.getName();
			Object value = null;
			try {
				value = field.get(instance);
			} catch (IllegalAccessException e) {
				value = "*";
			}
			sb.append("," + name + "=" + value);
		}
		return sb.toString();
	}


	public static void main(String[] args){
		Gal gal = new Gal();
		gal.setCount(100);
		gal.setFavorite("normal");
		
		String s = ToStringer.toString(gal);
		System.out.println(s);		
	}

}
