当前位置: 首页 > 面试题库 >

我可以使用可从Java实现Java接口的scala类吗?

谷泽宇
2023-03-14
问题内容

我正在学习Scala,并好奇是否有可能:

  1. 创建一个在Scala中实现Java接口的对象
  2. 将对象编译成类文件并将其打包
  3. 使用Java中的对象

我想在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!
        ...
    }
}

如果所有这些源html" target="_blank">文件都在同一个项目中,那么您将需要使用以下命令调用来编译它们:

$ scalac *.scala *.java
$ javac -classpath . *.java

第一个命令调用Scala /
Java联合编译器,该编译器将编译Scala源代码以及足以满足任何依赖关系的Java源代码。第二个命令使用类路径上最近编译的Scala类调用Java编译器。



 类似资料:
  • 问题内容: 我可以在Java中使用Scala List,例如: 它似乎没有编译。找不到List $ .apply方法。 当我将其更改为 其中Dir是我的scala类,而ls()返回一个scala列表,编译器抱怨 “内部编译器错误:java.lang.ClassCastException:org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding

  • 问题内容: 有没有简单的方法可以采用现有的Java / scala数据类型和API接口并生成相应的.thrift文件?使用Thrift生成 服务器 数据结构会过度侵入,因为它会导致以下后果: 我无法注释我的数据结构(例如,用于XML,JSON,休眠持久性等) 这种模式与其他想要拥有或需要修改我的源文件的序列化框架相冲突。 结果,它看起来像是节俭,迫使自己成为服务器的专有持久性格式,除非,也就是说,

  • 在OOP中,抽象是当我们只向用户提供有用的细节,并隐藏所有实现细节时。那么,如果我有一个接口,并且我在一个类中实现它,那么这是如何实现抽象的呢?我读了这篇关于“如何使用接口实现100%的抽象”的文章 如果这个问题听起来离题或者含糊不清,那么它真的是,我想知道的是oop中的抽象是如何与接口相关的。

  • 问题内容: 我不确定如何在我的抽象类中实现类似的接口。我有以下示例代码可用来尝试解决这个问题: 我有一个测试类,该类将创建Animal类型的对象,但是我希望在该类中具有一个可比的接口,以使发现的年纪高于低位。我不知道如何去解决这个问题。 问题答案: 您只需要定义即p。然后,您必须以自己喜欢的方式实现该方法。 使用的实现,具有较高级别的动物将获得更高的顺序。我希望你的想法和这个例子。

  • 我不确定如何在我的抽象类中实现一个可比较的接口。我有下面的示例代码,我正在使用它来尝试和得到我的头脑周围: 我有一个测试类,它将创建动物类型的对象,但是我想在这个类中有一个类似的接口,这样更早的发现排名就会更高。不过,我不知道该怎么做。

  • 根据线程的名称,我想使用SpringBoot创建一个JAVA库。我发现了这个线索:使用SpringBoot创建一个库jar。然而,该线程的目标似乎可以通过将其实现为RESTAPI来解决。 目前,我正在使用SpringBoot开发一个基于Spring的JAVA库。而且,我尝试将其打包为jar文件,并让另一个JAVA应用程序在JAVA库中使用它。不幸的是,我发现当调用方应用程序调用添加的库的某些方法时