gpt4 book ai didi

java - 尝试使用反射调用私有(private)字段上的方法时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 06:47:23 25 4
gpt4 key购买 nike

原始问题描述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");

我得到的requestnull

并且字段 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com