public static String toString(Object obj) {
List<String> hiddens = new ArrayList<String>();
Class<?> clazz = obj.getClass();
while (clazz != ToString.class && clazz != Object.class) {
for (Field f : clazz.getDeclaredFields()) {
LogHidden hidden = f.getAnnotation(LogHidden.class);
if (null != hidden) {
hiddens.add(f.getName());
}
}
clazz = clazz.getSuperclass();
}
if (hiddens.size() == 0) {
return ToStringBuilder.reflectionToString(obj, ToStringStyle.SHORT_PREFIX_STYLE);
}
return new ReflectionToStringBuilder(obj, ToStringStyle.SHORT_PREFIX_STYLE)
.setExcludeFieldNames(hiddens.toArray(new String[hiddens.size()])).toString();
List<String> hiddens = new ArrayList<String>();
Class<?> clazz = obj.getClass();
while (clazz != ToString.class && clazz != Object.class) {
for (Field f : clazz.getDeclaredFields()) {
LogHidden hidden = f.getAnnotation(LogHidden.class);
if (null != hidden) {
hiddens.add(f.getName());
}
}
clazz = clazz.getSuperclass();
}
if (hiddens.size() == 0) {
return ToStringBuilder.reflectionToString(obj, ToStringStyle.SHORT_PREFIX_STYLE);
}
return new ReflectionToStringBuilder(obj, ToStringStyle.SHORT_PREFIX_STYLE)
.setExcludeFieldNames(hiddens.toArray(new String[hiddens.size()])).toString();
}
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogHidden {
}