package tc.oc.commons.core.reflect;
import java.lang.reflect.Member;
import static tc.oc.commons.core.reflect.Members.enclosingMember;
/**
* Helper methods to generate readable descriptions from reflective objects
*/
public final class ReflectionFormatting {
private ReflectionFormatting() {}
public static String multilineDescription(Member member) {
return member.getClass().getSimpleName().toLowerCase() +
" " + member.getName() +
" of " + multilineDescription(member.getDeclaringClass());
}
public static String multilineDescription(Class<?> cls) {
final String text = cls.getName();
final Member member = enclosingMember(cls);
if(member != null) {
return text + "\n in " + multilineDescription(member);
}
final Class<?> outer = cls.getEnclosingClass();
if(outer != null) {
return text + "\n in " + multilineDescription(outer);
}
return text;
}
}