我正在尝试在 scala 中做这样的事情:
class SessionObject {
def setParameter(parameterOne : String): Unit = {
//Doing some stuff
}
def getResult(javaListParameter: java.util.List[String]): JsonObject = {
//doing some stuff
}
}
编译完 scala 代码后,我尝试在 Java 中将其用作库。像这样的事情:
SessionObject object = new SessionObject();
object.setParameter("Something");
List<String> theList = new ArrayList<String>();
object.getResult(theList);
但是,我无法查看/访问 Java 中的“getResult”方法。这是 scala 的限制还是我遗漏了什么?
谢谢!
编辑:
我试过这个solution ,但似乎不起作用。任何使用 java.util.List 作为参数或结果的方法都不能在 java 代码中使用。
忘记提及编译器信息。我正在使用 maven-scala-plugin 版本 2.15.2 和 scala 版本 2.10.3
编辑:
好吧,按照 wingedsubmariner 的建议,我忽略了 IDE 预编译提示并进行了编译。现在我得到了这个:
method com.*.*.*.*.SessionObject.getResult(java.lang.String,scala.collection.immutable.List<java.lang.String>,java.lang.String,scala.collection.immutable.List<java.lang.String>) is not applicable
(actual argument java.util.List<java.lang.String> cannot be converted to scala.collection.immutable.List<java.lang.String> by method invocation conversion)
method com.*.*.*.*.SessionObject.getResult(java.lang.String,java.util.ArrayList<java.lang.String>,java.lang.String,java.util.ArrayList<java.lang.String>) is not applicable
(actual argument java.util.List<java.lang.String> cannot be converted to java.util.ArrayList<java.lang.String> by method invocation conversion)
这似乎告诉我 java.util.List 参数定义在某种程度上被忽略了。
最佳答案
看来是 IDE 问题。感谢 wingedsubmariner,我探索了一种不同的方法。我正在使用 Netbeans 8.0,并使用可用的 Scala 插件。当我使用 Java 集合作为参数或返回类型时,IDE 无法识别这些方法,这意味着它们不会出现在代码提示中,并且会被标记为未定义。我可以编译代码,忽略这些代码警告并按预期工作。
关于java.util.list 作为 scala 类方法中的参数在 Java 代码中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23278349/