为了账号安全,请及时绑定邮箱和手机立即绑定

HashMap 的代理 NullPointerException

HashMap 的代理 NullPointerException

猛跑小猪 2022-01-19 09:52:27
我正在尝试在我的 WebApp 和磁盘上的存储之间建立代理。我知道 WebApp 一切正常,它甚至将内容保存到磁盘,所以我知道 InvocationHandler 上的 Invoke 方法被调用,但代理本身似乎为 Null,因此 WebApp 上没有任何内容得到更新。创建代理:public class Storage {public static final Storage INSTANCE = new Storage();private Storage() {}//private final Map<String, Note> tmpStorage = new HashMap<>();public Map<String, Note> getStorageForUser(Credentials credentials) {    String location = "./storage/"+credentials.getUsername();    return (Map<String, Note>) Proxy.newProxyInstance(            Map.class.getClassLoader(),            new Class<?>[]{Map.class},            new FileStorageMap(location, new HashMap<>()));    //return tmpStorage;}}调用处理程序:    @Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {    if (method.getName() == "post" || method.getName() == "put"){        FileUtils.writeStringToFile(new File(folder.getPath()+"/"+args[0]), (new NoteToJson((Note)args[1])).getJson().toString(), "UTF-8");    }    else{        new File(folder.getPath()+"/"+args[0]).delete();    }    return method.invoke(proxiedMap, args);}我已经检查并在创建名为“FileStorageMap”的 InvocationHandler 时,文件夹和 proxiedMap 是数据字段,它们都不是 Null,它们都已正确填写。但是对于代理本身,它返回 NullPointerException。谁能告诉我这是为什么?
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

错误在于方法名称是错误的,并且更多的东西进入了 else 语句,这超出了我的预期。代理本身并不是真正的问题。


查看完整回答
反对 回复 2022-01-19
  • 1 回答
  • 0 关注
  • 264 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信