簡體   English   中英

嘗試使用Reflection在私有字段上調用方法時出現NullPointerException

[英]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");

我得到requestnull

並且Field f不為空

private javax.servlet.http.HttpServletRequest com.sunrunhome.blackbird.service.SecureResource.request

請讓我知道我在哪里犯錯誤?

編寫的代碼是正確的,但是誰說request應該null 向我們展示資源類的默認構造函數。 (注意:如果您依賴某些注入發生,它就不會。注入框架僅在您不繞過它們時才起作用。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM