生而自由

自由而无用的灵魂

使用Java反射实现通用的toString方法

很初级的代码,记在这里方便以后复制粘贴…..

不过也有两个要注意的地方,一个是应该使用getDeclaredFields来获取所有的属性而非getFields,后者只会获取访问权限为public的属性;另一个是在访问private字段之前要field.setAccessible(true)一下否则会抛IllegalAccessException的异常。

@Override
public String toString() {
	StringBuffer sb = new StringBuffer();

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

	sb.append("[");

	for (Field field : fields) {
		sb.append(field.getName() + "=");

		//把字段设置为public访问属性
		field.setAccessible(true);
		try {
			if (field.getType().isPrimitive() || field.getType() == String.class) {
				sb.append(field.get(this));
			} else {
				sb.append(field.get(this).toString());
			}
		} catch (IllegalAccessException e) {
			sb.append("(Exception)");
		} finally {
			sb.append(";");
		}
	}

	sb.append("]");

	return sb.toString();
}

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注