getFields()
public整个类层次结构中的所有字段。
getDeclaredFields()
所有字段,无论其可访问性如何,仅适用于当前类,而不包括当前类可能继承的任何基类。
为了获得层次结构中的所有字段,我编写了以下函数:
public static Iterable<Field> getFieldsUpTo(@Nonnull Class<?> startClass, @Nullable Class<?> exclusiveParent) { List<Field> currentClassFields = Lists.newArrayList(startClass.getDeclaredFields()); Class<?> parentClass = startClass.getSuperclass(); if (parentClass != null &&(exclusiveParent == null || !(parentClass.equals(exclusiveParent)))) { List<Field> parentClassFields = (List<Field>) getFieldsUpTo(parentClass, exclusiveParent); currentClassFields.addAll(parentClassFields); } return currentClassFields;}
将
exclusiveParent提供一流的,以防止字段检索
Object。可能是
null您确实想要这些
Object字段。
澄清一下,
Lists.newArrayList来自番石榴。更新资料
仅供参考,上面的代码在GitHub上,我发表LibEx项目ReflectionUtils。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)