tom*_*eng 17 java scala interface
我正在学习Scala并且很好奇是否有可能:
我想在scala中实现自定义lucene查询解析器,并允许其他人从java应用程序访问它.
Dan*_*wak 28
我假设通过"对象"你实际上意味着"阶级".无论如何,答案是肯定的,你可以这样做.如果您希望在同一个项目中使用Scala/Java联合编译器,则需要利用它.例如:
public interface Parser {
public TokenIterator parse(InputStream is);
}
Run Code Online (Sandbox Code Playgroud)
然后在斯卡拉:
class ParserImpl extends Parser {
def parse(is: InputStream) = ...
}
Run Code Online (Sandbox Code Playgroud)
最后,再次在Java中:
public class Consumer {
public static void main(String[] args) {
Parser p = new ParserImpl(); // just like a Java class!
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果所有这些源文件都在同一个项目中,那么您将需要使用以下命令调用来编译它们:
$ scalac *.scala *.java
$ javac -classpath . *.java
Run Code Online (Sandbox Code Playgroud)
第一个命令调用Scala/Java联合编译器,它将编译Scala源和足够的Java源以满足任何依赖性.第二个命令使用类路径上最近编译的Scala类调用Java编译器.