gpt4 book ai didi

java - 重新编码从可调用返回值的 future

转载 作者:行者123 更新时间:2023-12-02 04:21:39 25 4
gpt4 key购买 nike

我的Callable返回Map ,所以当我将它分配给 Future 时并打印出其内容,显示 {necessities=300, investment=100, savings=200} .

但是我如何真正读取上面的这些值呢?我尝试重新分配从 future to Map<String,String> 获得的值但我收到不兼容类型错误。

我的 map 是Map<String, String> 。这是Callable返回数据(在 kucing.java 中):

public Callable<Map<String, String>> getData() {
return new Callable() {
public Map<String, String> call() {
return getDataFromDatabase();
}
};
}

以下是我如何将数据检索到我的 Future

Future myResult = es.submit(kucing.getData());

Observable<Future> myObservable = Observable.just(myResult);

Subscriber<Future> mySubscriber = new Subscriber<Future>() {

@Override
public void onNext(Future future) {
Log.v(FILE_NAME,"future: " + future.toString());
try{
Log.v(FILE_NAME,"future: " + future.get().toString());
Map<String, String> map = future.get();
}catch (Exception e){
Log.e(FILE_NAME,"future e: " + e.toString());
}

}
};

最佳答案

Future myResult = es.submit(kucing.getData());

这个 Future 有一个原始类型:你实际上不知道它的返回值的类型是什么(尽管你知道它将是一个对象)。

Map<String, String> map = myResult.get(); // Compiler error.
Object obj = myResult.get(); // OK.

您需要提供完整的类型:

Future<Map<String, String>> myResult = es.submit(kucing.getData());
Map<String, String> map = myResult.get(); // OK.

如果您想在此观察者/订阅者模式中使用 Future,则需要替换所有出现的 FutureFuture<Map<String, String>> .

关于java - 重新编码从可调用返回值的 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705658/

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