我正在学习Scala,并好奇是否有可能:
我想在Scala中实现自定义Lucene查询解析器,并能够让其他人从Java应用程序访问它。
我假设“对象”实际上是“类”。无论如何,答案是肯定的,您可以这样做。如果您希望所有这些都在同一项目中,则需要利用Scala / Java联合编译器。例如:
public interface Parser { public TokenIterator parse(InputStream is); }
然后在Scala中:
class ParserImpl extends Parser { def parse(is: InputStream) = ... }
最后,再次在Java中:
public class Consumer { public static void main(String[] args) { Parser p = new ParserImpl(); // just like a Java class! ... } }
如果所有这些源文件都在同一个项目中,那么您将需要使用以下命令调用来编译它们:
$ scalac *.scala *.java $ javac -classpath . *.java
第一个命令调用Scala / Java联合编译器,该编译器将编译Scala源代码以及足以满足任何依赖关系的Java源代码。第二个命令使用类路径上最近编译的Scala类调用Java编译器。