Java反射中的getFields和getDeclaredFields有什么区别

Java反射中的getFields和getDeclaredFields有什么区别,第1张

Java反射中的getFields和getDeclaredFields有什么区别

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。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5564966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存