A large motivation for me starting this blog was to help me remember useful snippets of code. This is a good example:
Field getField(Class clazz, final String fieldName)
throws NoSuchFieldException {
for (; null != clazz; clazz = clazz.getSuperclass()) {
try {
final Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
return field;
} catch (final NoSuchFieldException e) { }
}
throw new NoSuchFieldException(fieldName);
} Very simple code, no? But a fact I seem to sometime forget is that inherited fields do not show up in reflection; one must reflect down into the appropriate superclass where the field was declared. The simple method handles the details easily enough.
1 comment:
Useful if you want to find a field which is not public. But I guess this is your aim, since you added the command setAccessible(true). For public fields, the Class.getField(name) is enough.
Post a Comment