反射書き込みtostringメソッドの適用

1729 ワード

反射書き込みtostringメソッドの適用


反射書きのtostringメソッドを適用し、後でクエリーするのに便利です.

コード#コード#

package com.chzhao.reflecttest;

import java.lang.reflect.Field;
import java.util.List;

public class ToStringToolkit {
	@SuppressWarnings("rawtypes")
	public static <T> String toStringGeneric(T t) {
		StringBuilder sb = new StringBuilder();
		Class clazz = (Class) t.getClass();
		Field[] fs = clazz.getDeclaredFields();
		for (int i = 0; i < fs.length; i++) {
			Field f = fs[i];
			f.setAccessible(true);
			sb.append("\t");
			sb.append(f.getName());
			sb.append(":");
			try {
				sb.append(f.get(t).toString());
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		sb.append("
"); return sb.toString(); } public static <T> String toStringList(List<T> list) { StringBuilder sb = new StringBuilder(); for (T t : list) { sb.append(toStringGeneric(t)); } return sb.toString(); } }

使用法

package com.chzhao.reflecttest;

public class Model {

	private String name;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}
package com.chzhao.reflecttest;

public class App {
	public static void main(String[] args) {
		Model m = new Model();
		m.setAge(100);
		m.setName(" ");
		System.out.println(ToStringToolkit.toStringGeneric(m));
	}
}

しゅつりょく
	name: 	age:100