原始问题描述How to run method on private field using reflection?
类(class)是
public class SecureResource {
private HttpServletRequest request;
public SecureResource() {}
@Inject
public SecureResource(@Nonnull final HttpServletRequest request) {
this.request = request;
}
// more things
}
基于@Jon 的回答
(Where resource is a reference to the relevant instance of 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
并且字段 f
不为空
private javax.servlet.http.HttpServletRequest com.sunrunhome.blackbird.service.SecureResource.request
请告诉我我在哪里犯了错误?
最佳答案
代码是正确的,但谁说request
不应该为null
?向我们展示您的资源类的默认构造函数。 (注意:如果您依赖于某些注入(inject)的发生,则它不会发生。注入(inject)框架仅在您不规避它们时才起作用。)
关于java - 尝试使用反射调用私有(private)字段上的方法时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18476024/