Gerry5126
本帖最后由 Gerryawa 于 2020-10-4 16:58 编辑

RT
报错如下

代码

望大佬解答



洞穴夜莺
本帖最后由 洞穴夜莺 于 2020-10-4 17:20 编辑

cs指针明显为空
你怎么能对一个空指针解引用呢
  1. if (cs.getKeys(false)!=null) {
复制代码

Gerry5126
洞穴夜莺 发表于 2020-10-4 17:12
cs指针明显为空
你怎么能对一个空指针解引用呢

那为什么使用这个方法无法get到内容?

洞穴夜莺
本帖最后由 洞穴夜莺 于 2020-10-4 17:49 编辑
Gerryawa 发表于 2020-10-4 17:34
那为什么使用这个方法无法get到内容?

因为cs是空的
我告诉你我家地址是“”
你能找到我吗?
拜托学学Java吧

我把你这段程序完全重写了一遍
  1. public static ArrayList<Arena> getCanLoadArenas() {
  2.         ArrayList<Arena> arenas = new ArrayList<>();
  3.         ConfigurationSection cs = arenaConfig.getConfigurationSection("arenas");
  4.         if(cs == null)
  5.                 return arenas;
  6.         for(String key : cs.getKeys(false)) {
  7.                 Object value = cs.get(key + "arena");
  8.                 if(value instanceof Arena) {
  9.                         Arena arena = (Arena) value;
  10.                         if(arena.getLoc1() != null && arena.getLoc2() != null && arena.getLoc1().getWorld().equals(arena.getLoc2().getWorld()))
  11.                                 arenas.add(arena);
  12.                 }
  13.         }
  14.         return arenas;
  15. }
复制代码

William_Shi
洞穴夜莺 发表于 2020-10-4 17:36
因为cs是空的
我告诉你我家地址是“”
你能找到我吗?

其实看了题主的这个程序我有点疑问
在没有任何反序列化的情况下
真的可以做到ConfigurationSection里取出来一个值就是Arena这个对象么
Arena对象并不是Bukkit自带的东西
序列化保存后不反序列化也可以直接取出么?

洞穴夜莺
William_Shi 发表于 2020-10-4 18:44
其实看了题主的这个程序我有点疑问
在没有任何反序列化的情况下
真的可以做到ConfigurationSection里取出 ...

其实我也有这个疑问,在回他帖前就查了代码
我看了Bukkit的代码,大致想法如下:
1,YamlConfiguration的ConfigurationSection里取出来一个值就是Arena是有可能的,前提是楼主把这玩意当HashMap用
2,Bukkit的YamlConfiguration没法从文件反序列化得到的ConfigurationSection中取出Arena对象
3,这个ConfigurationSection不一定是YamlConfiguration,可能是第三方实现