Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自bukkitrunable的返回值_Java_Minecraft_Bukkit - Fatal编程技术网

Java 来自bukkitrunable的返回值

Java 来自bukkitrunable的返回值,java,minecraft,bukkit,Java,Minecraft,Bukkit,我使用bukkitrunable向映射异步添加值,然后我想返回映射 public Map<String, Object> test() { final Map<String, Object> testMap = new HashMap<>(); new BukkitRunnable() { @Override public void run() { testMap.put("A"

我使用bukkitrunable向映射异步添加值,然后我想返回映射

    public Map<String, Object> test() {
    final Map<String, Object> testMap = new HashMap<>();

    new BukkitRunnable() {
        @Override
        public void run() {
            testMap.put("A", 1);
            testMap.put("B", 2);
        }
    }.runTaskAsynchronously(bridge);

    return testMap;
}
publicmap测试(){
final-Map testMap=new-HashMap();
新的bukkitrunable(){
@凌驾
公开募捐{
testMap.put(“A”,1);
testMap.put(“B”,2);
}
}.runtask异步运行(桥接);
返回testMap;
}
如果我想使用这张地图,它将永远是空的。它在将值添加到映射之前返回,因为我正在另一个线程中添加它们


我真的想用一个BukkitRunnable,而不是未来。我怎样才能做到这一点?我需要延迟返回映射,或者更好的是,从BukkitRunnable返回映射。

问题是
映射将直接返回,但任务将异步运行,因此返回的
映射将为空。因此,您应该向该方法添加
使用者
,以获得异步结果

试试这个:

公共无效测试(使用者回调){
final Map yourMap=new HashMap();
新的bukkitrunable(){
@凌驾
公开募捐{
你的地图;
你的地图;
callback.accept(yourMap);//消费者在这里获得地图
}
}.runtask异步运行(桥接);
}
用途λ:

。。。
referenceToClass.test(map->{//Lambda
objectsomeobject=map.get(“A”);
});
正常使用:

。。。

referenceToClass.test(new consumery)您可以执行回调。因此,您的方法测试将是
test(Function callback)
,并在
中运行
,在您将信息放入您调用的map
callback.execute(map)
中之后,您可以使用非空的map执行方法。不确定如何使用此方法。Consumer如何工作?