[英]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.