首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将x10对象导入java

将x10对象导入java
EN

Stack Overflow用户
提问于 2017-02-23 07:02:00
回答 2查看 145关注 0票数 2

我们需要将一个x10 arrayliststring作为对象传递给一个Java方法。我们在中尝试的是this.The方法签名,如下所示。

代码语言:javascript
复制
public void getX10ArrayList ( ArrayList <String > nameList):

我们在X10类中实现该方法,如下所示。

代码语言:javascript
复制
public def getX10ArrayList ( var names : ArrayList [String] ) {
    // do something
}

我们收到一个编译错误,表示接口需要一个类型为x10.util.ArrayList的对象,但是我们发送的对象类型是x10.util.ArrayList x10.lang.String`。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-07 23:41:03

不幸的是,当前的X10类型系统不允许X10类实现参数化的X10接口。虽然它看起来是正确的解决方案是定义接口,正如@Darpan建议的那样:

代码语言:javascript
复制
public void getX10ArrayList(ArrayList[String] nameList);

当对Java接口进行类型检查时,类型参数将从X10接口中删除,因此类型不同。从X10到Java类转换的详细信息可以在论文 (Takeuchi et al. 2011)中找到。

一个可能的解决办法是将泛型类包装成非参数化类型。例如:

代码语言:javascript
复制
// MyArrayList.java
import java.util.ArrayList;
class MyArrayList {
    public ArrayList<String> list;
}

// X10ArrayListProvider.java
public interface X10ArrayListProvider {
    public void getX10ArrayList(MyArrayList nameList);
}

// ArrayListProvider.x10
import MyArrayList;
import X10ArrayListProvider;
public class ArrayListProvider implements X10ArrayListProvider {
    public def getX10ArrayList(names:MyArrayList):void {
        // ...
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-02-23 07:32:52

你不需要把你的界面签名声明为-

代码语言:javascript
复制
Public void getX10ArrayList(ArrayList[String] nameList):
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42409056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档