0

原始问题描述了如何使用反射在私有字段上运行方法?

班级是

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

请让我知道我在哪里犯错误?

4

1 回答 1

2

代码是正确的,但谁说这request应该null?向我们展示资源类的默认构造函数。(注意:如果您依赖某些注入发生,则不会。注入框架仅在您不规避它们时才起作用。)

于 2013-08-27T21:51:03.913 回答