gpt4 book ai didi

java - ReflectionUtil getField 抛出 NullPointerException

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:44 24 4
gpt4 key购买 nike

我使用一个类,通过 FilterCriterionList(某种查找器)进行 Hibernate 查询,到目前为止它一直工作得很好,并触发 NullPointerException,我完全不知道为什么会触发它。

这是使用以下值触发空指针的方法(在 ReflectionUtil 中)(请注意,向其抛出的其他值工作正常,只是这些值似乎给出了错误):

类型=接口(interface)java.util.List

字段名称=参数

首先,它抛出 NoSuchFieldException,然后在第二次运行时(因为在 field = getField(type.getSuperclass(), fieldName); 处再次调用它),使其抛出 NullPointerException,然后停止运行(所有这些都发生在我的 UnitTest 中,而不是实时环境中)。

public static Field getField(Class type, String fieldName) {
Field field = null;
try {
field = type.getDeclaredField(fieldName);
} catch (Exception e) {
if (!type.equals(Object.class)) {
field = getField(type.getSuperclass(), fieldName);
}
}
return field;
}

关于为什么会发生这种情况的任何想法(或者我可以做些什么来解决它?)。我无法真正展示更多代码,因为它非常复杂并且是公司代码。

最佳答案

java.util.List 是一个接口(interface),因此对其调用 getSuperclass() 会导致 null

递归应用getField()的正确方法如下:

} catch (Exception e) {
Class superclass = type.getSuperclass();
if (superclass != null) {
field = getField(superclass, fieldName);
}
}

关于java - ReflectionUtil getField 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com