【发布时间】:2011-07-19 15:20:28
【问题描述】:
我有以下 Java 接口,
public interface JavascriptInterface
{
public MyIterator getItems();
}
public interface MyIterator
{
public boolean hasNext();
public String next();
}
我将其作为 API 公开给 JavaScript Web 应用程序:
Webview webview;
JavascriptInterface webapi;
//init webview and webapi [..]
webview.addJavascriptInterface(webapi, "webapi");
我想知道是否有可能使用这样的 JavaScript for 循环遍历项目:
for (var item in webapi.getItems())
{
//do something with item [..]
}
我必须使用/实现什么类型/方法而不是 MyIterator 才能使这成为可能,或者我可以以某种方式转换它(使用 JavaScript 帮助程序)?
我目前使用 JSON 返回一个 String 对象,并使用 JavaScript 库对其进行解析。有没有更简单/更快的解决方案?
编辑:JSON解决方案也有问题,我只能提供静态数据的副本,不能调用方法。
【问题讨论】:
-
您只能从您的 javascript 界面传回原语和字符串,但这仍然给您留下了很多选择。在最简单的情况下,您可以返回“{'item one','item two'}”,并且您的 javascript 会将其视为一个数组,但您也可以返回一个更复杂的 JSON 对象。在任何情况下,您的方法签名都需要返回一个字符串。我希望这会有所帮助。
-
至少我还可以返回任何其他自定义接口并在其上调用方法。所以我不太确定我是否应该这么快放弃这个想法。一个简单的 foreach 实现只需要一个
boolean hasNext()和一个AnySupportedType next()方法。但是这怎么能在javascript中完成呢? :\
标签: java javascript android performance