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

如何在Clojure中创建Scala对象

萧繁
2023-03-14
问题内容

我正在尝试kafka.utils.ZKStringSerializer用clojure创建一个scala对象。(在org.apache.kafka/kafka_2.10 “0.8.0”)

由于我对scala知之甚少,所以我不知道如何调用它的构造函数。我这样尝试过:

(import 'kafka.utils.ZKStringSerializer)
(ZKStringSerializer.)                      
; or (new ZKStringSerializer)

并得到一个错误: CompilerException java.lang.IllegalArgumentException: No matching ctor found for class kafka.utils.ZKStringSerializer

我尝试使用(clojure.reflect/reflect ZKStringSerializer)来查看其方法,但是只有一些静态方法。并(class ZKStringSerializer)告诉我这是一类,而不是我想要的实例。

该对象的实现如下:

object ZKStringSerializer extends ZkSerializer {

  @throws(classOf[ZkMarshallingError])
  def serialize(data : Object) : Array[Byte] = data.asInstanceOf[String].getBytes("UTF-8")

  @throws(classOf[ZkMarshallingError])
  def deserialize(bytes : Array[Byte]) : Object = {
    if (bytes == null)
      null
    else
      new String(bytes, "UTF-8")
  }
}

问题答案:

所有scala对象都是的单例java。没有公共构造函数。您应该使用静态字段MODULE$获取单例的实例。

我不知道clojure,但是根据此页面,您似乎应该使用以下代码:

ZKStringSerializer$/MODULE$

还要注意,对象的实际类型名称包含$最后一个字符。



 类似资料:
  • 本文向大家介绍如何在Java中创建String对象?,包括了如何在Java中创建String对象?的使用技巧和注意事项,需要的朋友参考一下 您可以通过以下方式创建字符串: 将包装在“”中的字符串值分配给String类型变量。 通过将字符串值作为其构造函数的参数传递,使用new关键字创建String类的对象。 将字符数组传递给String构造函数。

  • 本文向大家介绍如何在Python中创建类对象?,包括了如何在Python中创建类对象?的使用技巧和注意事项,需要的朋友参考一下 使用该类的构造函数创建一个类对象。然后将该对象称为类的实例。类实例化使用函数表示法。  在下面的代码中,我们定义一个类并创建了相同类的实例,如下所示

  • 注意:3D 工具和透视网格工具是不同的两种工具,在透视中处理 3D 对象的方式与处理其他任何透视对象完全一样。 创建 3D 对象 3D 效果使您可以从二维 (2D) 图稿创建三维 (3D) 对象。您可以通过高光、阴影、旋转及其他属性来控制 3D 对象的外观。您还可以将图稿贴到 3D 对象中的每一个表面上。 有两种创建 3D 对象的方法:通过凸出或通过绕转。另外,还可以在三维空间中旋转 2D 或 3

  • 我如何创建一个懒散的随机数序列? 执行它将引发异常: (线程“main”clojure.lang.arityException中的异常:传递给:USER$random-numbers$fn at clojure.lang.afn.throwarity(afn.java:437)at clojure.lang.afn.invoke(afn.java:39)at clojure.core$iterat

  • 我是Corda的新手,我刚刚在文档的帮助下开发了一个应用程序。文档真的很棒,他们解释事情的方式。但是,我有几个问题,我无法找到解决方案。为了创建当事方,我在build.gradle文件中看到我们提到了当事方的详细信息。 但是,我认为这不是在文件中提及这些信息的正确方法。必须有一些数据库。 正如我们可以看到的,我们为每个节点指定了一个端口和ip。所以,它必须是一个独立的过程。但是,假设我有一家银行,

  • 由于我在Drools中使用Scala不可变对象,为了更新事实,我需要创建一个新对象来替换它。我已经为要调用的规则编写了一个Scala方法,它只返回这样一个对象。 我的问题是,在Drools规则的“然后”部分中定义新的Scala case类对象的语法是什么?我尝试过类似于以下我在某处看到的语法,但它似乎也没有起到作用...(即使对于标准类型,如字符串) 目前对Drools Scala的支持和文档似乎