[英]NullPointerException while trying to invoke method on private field using Reflection
原始问题描述如何使用反射在私有字段上运行方法?
这堂课是
public class SecureResource {
private HttpServletRequest request;
public SecureResource() {}
@Inject
public SecureResource(@Nonnull final HttpServletRequest request) {
this.request = request;
}
// more things
}
基于@Jon回答
(其中resource是对SecureResource的相关实例的引用。)
我做了以下
Class cls = response.getResourceClass();
Object obj = cls.newInstance();
Field f = cls.getDeclaredField("request");
f.setAccessible(true);
HttpServletRequest request = (HttpServletRequest) f.get(obj);
String auth = request.getHeader("X-AUTH");
我得到request
为null
并且Field f
不为空
private javax.servlet.http.HttpServletRequest com.sunrunhome.blackbird.service.SecureResource.request
请让我知道我在哪里犯错误?
编写的代码是正确的,但是谁说request
不应该为null
? 向我们展示资源类的默认构造函数。 (注意:如果您依赖某些注入发生,它就不会。注入框架仅在您不绕过它们时才起作用。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.